Aracılığıyla paylaş


about_Numeric_Literals

Kısa açıklama

Bu makalede PowerShell'de sayısal değerlerin söz dizimi ve kullanımı açıklanmaktadır.

Uzun açıklama

İki tür sayısal değişmez değer vardır: tamsayı ve gerçek. Her ikisinde de tür ve çarpan sonekleri olabilir.

Tamsayı değişmez değerleri

Tamsayı değişmez değerleri ondalık veya onaltılık olarak yazılabilir. Onaltılık değişmez değerler, ondalık sayılardan ayırt etmek için ön eke sahiptir 0x .

Tamsayı değişmez değerleri bir tür soneki ve çarpan soneki içerebilir.

Sonek Anlamı
l uzun veri türü
kb kibibayt (10241) çarpanı
mb mebibayt (10242) çarpanı
gb gigibyte (10243) çarpanı
tb teribyte (10244) çarpanı
pb petibayt (10245) çarpan

Tamsayı değişmez değerinin türü değeri, tür soneki ve sayısal çarpan soneki tarafından belirlenir.

Tür soneki olmayan bir tamsayı değişmez değeri için:

  • Değer türüyle [int]temsil edilebiliyorsa, bu onun türüdür.
  • Aksi takdirde, değer türüyle [long]temsil edilebiliyorsa, bu onun türüdür.
  • Aksi takdirde, değer türüyle [decimal]temsil edilebiliyorsa, bu onun türüdür.
  • Aksi takdirde, türüyle [double]temsil edilir.

Tür soneki olan bir tamsayı değişmez değeri için:

  • Tür soneki ise u ve değer türle [int] gösterilebilirse türü olur [int].
  • Tür soneki ise u ve değer türle [long] gösterilebilirse türü olur [long].
  • Değeri belirtilen türle temsil edilebiliyorsa, türü bu olur.
  • Aksi takdirde, bu değişmez değer yanlış biçimlendirilmiştir.

Gerçek değişmez değerler

Gerçek değişmez değerler yalnızca ondalık gösterimiyle yazılabilir. Bu gösterim, ondalık ayırıcıdan sonra kesirli değerler ve üstel bir bölüm kullanılarak bilimsel gösterim içerebilir.

Üstel bölüm bir 'e' ve ardından isteğe bağlı bir işaret (+/-) ve üssü temsil eden bir sayı içerir. Örneğin, değişmez değer 1e2 100 sayısal değerine eşittir.

Gerçek değişmez değerlerin tür soneki ve çarpan soneki olabilir.

Sonek Anlamı
d ondalık veri türü
kb kibibayt (10241) çarpanı
mb mebibayt (10242) çarpanı
gb gigibyte (10243) çarpanı
tb teribyte (10244) çarpanı
pb petibayt (10245) çarpan

İki tür gerçek değişmez değer vardır: çift ve ondalık. Bunlar, sırasıyla ondalık türü son ekinin yokluğu veya iletişim durumuyla gösterilir. PowerShell bir değerin değişmez bir gösterimini [float] desteklemez. Çift gerçek değişmez değer türüne [double]sahiptir. Ondalık gerçek değişmez değeri türüne [decimal]sahiptir. Ondalık gerçek değişmez değerin kesir bölümünde sondaki sıfırlar önemlidir.

Üstel bölümün basamaklarının gerçek bir [double] değişmez değerdeki değeri desteklenen en düşük değerden küçükse, bu [double] gerçek değişmez değerin değeri 0'dır. Gerçek bir [decimal] değişmez değerdeki üstel parça basamaklarının değeri desteklenen en düşük değerden küçükse, bu değişmez değer yanlış biçimlendirilmiş olur. Bir veya [double] gerçek değişmez değerdeki [decimal] üstel parça basamaklarının değeri desteklenen en yüksek değerden büyükse, bu değişmez değer yanlış biçimlendirilmiş olur.

Not

Söz dizimi, çift gerçek değişmez değerin uzun tür son ekine sahip olmasına izin verir. PowerShell bu durumu, değeri türüyle [long]temsil edilen bir tamsayı değişmez değeri olarak değerlendirir. Bu özellik, PowerShell'in önceki sürümleriyle geriye dönük uyumluluk için korunmaktadır. Ancak programcıların bu formun tamsayı değişmez değerlerini kullanmaları önerilmez çünkü değişmez değerin gerçek değerini kolayca gizleyebilirler. Örneğin, 1.2L 1 değerine sahiptir, 1.2345e1L 12 değerine sahiptir ve 1.2345e-5L 0 değerine sahiptir; bunların hiçbiri hemen belirgin değildir.

Sayısal çarpanlar

Kolaylık sağlamak için, tamsayı ve gerçek değişmez değerler, 2'nin yaygın olarak kullanılan güçlerinden birini gösteren sayısal bir çarpan içerebilir. Sayısal çarpan, büyük veya küçük harflerin herhangi bir bileşiminde yazılabilir.

Çarpan sonekleri, , uve ul tür sonekleri ile lbirlikte kullanılabilir.

Çarpan örnekleri

PS> 1kb
1024

PS> 1.30Dmb
1363148.80

PS> 0x10Gb
17179869184

PS> 1.4e23tb
1.5393162788864E+35

PS> 0x12Lpb
20266198323167232

Sayısal tür hızlandırıcıları

PowerShell aşağıdaki tür hızlandırıcılarını destekler:

Hızlandırıcı Not Açıklama
[byte] Bayt (imzasız)
[sbyte] Bayt (imzalı)
[int16] 16 bit tamsayı
[uint16] 16 bit tamsayı (işaretsiz)
[int32] 32 bit tamsayı
[int] diğer adı [int32] 32 bit tamsayı
[uint32] 32 bit tamsayı (işaretsiz)
[int64] 64 bit tamsayı
[long] diğer adı [int64] 64 bit tamsayı
[uint64] 64 bit tamsayı (işaretsiz)
[bigint] Bkz. BigInteger Yapısı
[single] Tek duyarlıklı kayan nokta
[float] diğer adı [single] Tek duyarlıklı kayan nokta
[double] Çift duyarlıklı kayan nokta
[decimal] 128 bit kayan nokta

Diğer sayısal türlerle çalışma

Diğer herhangi bir sayısal türle çalışmak için, bazı sorunlar olmadan tür hızlandırıcıları kullanmanız gerekir. Örneğin, yüksek tamsayı değerleri başka bir türe dönüştürülmeden önce her zaman çift olarak ayrıştırılır.

PS> [bigint]111111111111111111111111111111111111111111111111111111
111111111111111100905595216014112456735339620444667904

Değer ilk olarak çift olarak ayrıştırılır ve daha yüksek aralıklarda duyarlık kaybedilir. Bu sorunu önlemek için değerleri dize olarak girin ve dönüştürün:

PS> [bigint]'111111111111111111111111111111111111111111111111111111'
111111111111111111111111111111111111111111111111111111

Örnekler

Aşağıdaki tabloda sayısal değişmez değerlerin çeşitli örnekleri yer alır ve bunların türü ve değeri listelenir:

Sayı Tür Değer
100 Int32 100
100D Ondalık 100
100l Int64 100
1e2 Çift 100
1.e2 Çift 100
0x1e2 Int32 482
0x1e2L Int64 482
0x1e2D Int32 7725
482D Ondalık 482
482gb Int64 517543559168
0x1e2lgb Int64 517543559168

Sayısal tür dönüştürme

Dizeler sayıya dönüştürüldüğünde, ek onaltılık biçim göstergeleri desteklenir. Bu ek biçimler değişmez değer olarak tanınmaz.

[int] '0xF' -eq 0xF
[int] '&hF' -eq 0xF
[int] '#F' -eq 0xF

Sayısal değişmez değerler gibi görünen komutlar

Sayısal değişmez değer gibi görünen tüm komutlar çağrı işleci ()& kullanılarak yürütülmelidir, aksi takdirde ilişkili türün bir numarası olarak yorumlanır.

Sayısal nesnelerin özelliklerine ve yöntemlerine erişme

Sayısal değişmez değerin bir üyesine erişmek için, değişmez değeri parantez içine almanız gereken durumlar vardır.

  • Değişmez değerin ondalık noktası yok
  • Değişmez değerde ondalık ayırıcıdan sonra basamak yok
  • Değişmez değerde sonek yok

Örneğin, aşağıdaki örnek başarısız olur:

PS> 2.GetType().Name
At line:1 char:11
+ 2.GetType().Name
+           ~
An expression was expected after '('.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression

Aşağıdaki örnekler çalışır:

PS> 2L.GetType().Name
Int64
PS> 1.234.GetType().Name
Double
PS> (2).GetType().Name
Int32

PowerShell ayrıştırıcısı sayısal değişmez değerin nerede sona ereceğini ve GetType yönteminin nerede başlayacağını belirleyebildiğinden, ilk iki örnek değişmez değeri parantez içine almadan çalışır.