Kayan nokta sayısal türleri (C# Başvurusu)
Kayan nokta sayısal türleri gerçek sayıları temsil eder. Tüm kayan nokta sayısal türleri değer türlerdir. Bunlar ayrıca basit türlerdir ve değişmez değerlerile başlatılabilir. Tüm kayan nokta sayısal türleri Aritmetik, karşılaştırmave eşitlik işleçlerini destekler.
Kayan nokta türlerinin özellikleri
C#, aşağıdaki önceden tanımlanmış kayan nokta türlerini destekler:
| C# türü/anahtar sözcüğü | Yaklaşık Aralık | Duyarlık | Boyut | .NET türü |
|---|---|---|---|---|
float |
± 1,5 x 10− 45 ila ± 3,4 x 1038 | ~ 6-9 basamak | 4 bayt | System.Single |
double |
± 5,0 × 10− 324 ila ± 1,7 × 10308 | ~ 15-17 basamak | 8 bayt | System.Double |
decimal |
± 1,0 x 10-28 ila ± 7,9228 x 1028 | 28-29 basamak | 16 bayt | System.Decimal |
Yukarıdaki tabloda, en soldaki sütundan her C# tür anahtar sözcüğü, karşılık gelen .NET türü için bir diğer addır. Bunlar arasında değiştirilebilir. Örneğin, aşağıdaki bildirimler aynı türdeki değişkenleri bildirir:
double a = 12.3;
System.Double b = 12.3;
Her kayan nokta türünün varsayılan değeri sıfırdır 0 . Kayan nokta türlerinin her biri, MinValue MaxValue Bu türün minimum ve maksimum sonlu değerini sağlayan ve sabitleridir. floatVe double türleri ayrıca, sayı olmayan ve sonsuz değerleri temsil eden sabitleri de sağlar. Örneğin, double türü aşağıdaki sabitleri sağlar: Double.NaN , Double.NegativeInfinity ve Double.PositiveInfinity .
decimalGerekli duyarlık derecesi, ondalık noktanın sağ tarafındaki basamak sayısına göre belirleniyorsa, tür uygundur. Bu sayılar genellikle finansal uygulamalarda, para birimi miktarları (örneğin, $1,00), faiz oranları (örneğin,% 2,625) için kullanılır. Yalnızca bir ondalık basamak için kesin olan sayılar, tür tarafından daha doğru işlenir decimal : 0,1, örneğin, tam olarak 0,1 ' i decimal double temsil eden bir veya örnek olarak, bir örnek tarafından tam olarak temsil edilebilir float . Sayısal türlerde bu fark nedeniyle, double veya ondalık veriler için kullandığınızda aritmetik hesaplamalarda beklenmedik yuvarlama hataları oluşabilir float . double decimal Performansı en iyi duruma getirmeye kıyasla bunun yerine kullanabilirsiniz. Ancak, performansla ilgili herhangi bir farklılık, en fazla hesaplama yoğun uygulamalar tarafından açıklanabilecek. Kaçınmanın olası bir nedeni decimal , depolama gereksinimlerini en aza indirmektir. örneğin, float 4 bayt ve 16 bayt arasındaki fark çok büyük veri kümeleri için eklediğinden, .net ML kullanır. Daha fazla bilgi için bkz. System.Decimal.
Bir ifadede integral türlerini ve float ve türlerini karıştırabilirsiniz double . Bu durumda, integral türler örtük olarak kayan nokta türlerinden birine dönüştürülür ve gerekirse float tür örtülü olarak dönüştürülür double . İfade, aşağıdaki gibi değerlendirilir:
doubleİfadede tür varsa, ifade olarakdoubleveyaboolilişkisel ve eşitlik karşılaştırmaları olarak değerlendirilir.- İfadede hiçbir tür yoksa
double, ifade olarakfloatveyaboolilişkisel ve eşitlik karşılaştırmaları olarak değerlendirilir.
Ayrıca integral türlerini ve decimal bir ifadede türü karıştırabilirsiniz. Bu durumda, integral türleri örtük olarak decimal türüne dönüştürülür ve ifade olarak decimal veya bool ilişkisel ve eşitlik karşılaştırmaları olarak değerlendirilir.
decimalTürü float double bir ifadede ve türleriyle karıştırılamaz. Bu durumda, aritmetik, karşılaştırma veya eşitlik işlemleri gerçekleştirmek istiyorsanız, aşağıdaki örnekte gösterildiği gibi, işlenenleri ya da türünden türüne açıkça dönüştürmeniz gerekir decimal :
double a = 1.0;
decimal b = 2.1m;
Console.WriteLine(a + (double)b);
Console.WriteLine((decimal)a + b);
Kayan noktalı bir değeri biçimlendirmek için Standart sayısal biçim dizelerini veya özel sayısal biçim dizelerini kullanabilirsiniz.
Gerçek sabit değerler
Gerçek bir sabit değerin türü, soneki tarafından aşağıdaki şekilde belirlenir:
- Sonek olmadan veya veya sonekine sahip sabit
ddeğerDtürüdouble - Veya sonekine sahip sabit
fdeğerFtürfloat - Veya sonekine sahip sabit
mdeğerMtürdecimal
Aşağıdaki kod, her birine bir örnek gösterir:
double d = 3D;
d = 4d;
d = 3.934_001;
float f = 3_000.5F;
f = 5.4f;
decimal myMoney = 3_000.5m;
myMoney = 400.75M;
Yukarıdaki örnek ayrıca _ C# 7,0 ile başlayarak desteklenen bir rakam ayırıcısı olarak kullanımını gösterir. Rakam ayırıcısını her türlü sayısal sabit değer ile kullanabilirsiniz.
Ayrıca, aşağıdaki örnekte gösterildiği gibi bilimsel gösterim kullanabilirsiniz, yani gerçek bir sabit değerin üs bir kısmını belirtebilirsiniz:
double d = 0.42e2;
Console.WriteLine(d); // output 42
float f = 134.45E-2f;
Console.WriteLine(f); // output: 1.3445
decimal m = 1.5E6m;
Console.WriteLine(m); // output: 1500000
Dönüşümler
Kayan nokta sayısal türleri arasında yalnızca bir örtük dönüşüm vardır: öğesinden float öğesine double . Ancak, herhangi bir kayan nokta türünü açık atamaile başka bir kayan nokta türüne dönüştürebilirsiniz. Daha fazla bilgi için bkz. yerleşik sayısal dönüştürmeler.
C# dili belirtimi
Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın: