Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kayan noktalı sayısal türler gerçek sayıları temsil gösterir. Tüm kayan nokta sayısal türleri değer türleridir. Bunlar ayrıca basit türlerdir ve değişmez değerlerle başlatılabilir. Tüm kayan noktalı sayısal türler aritmetik, karşılaştırma ve 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 | Kesinlik | Boyut | .NET türü |
|---|---|---|---|---|
float |
±1,5 x 10−45 ile ±3,4 x 1038 | ~6-9 basamak | 4 bayt | System.Single |
double |
±5,0 × 10−324 ile ±1,7 × 10308 | Yaklaşık 15-17 basamak | 8 bayt | System.Double |
decimal |
±1,0 x 10-28 ±7,9228 x 1028 | 28-29 basamak | 16 bayt | System.Decimal |
Yukarıdaki tabloda, en soldaki sütundaki her C# türü anahtar sözcüğü, karşılık gelen .NET türü için bir diğer addır. Bunlar 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, bu türün MinValue en düşük ve en yüksek sonlu değerini sağlayan ve MaxValue sabitlerine sahiptir.
float ve double türleri, sayı olmayan ve sonsuz değerleri temsil eden sabitler de sağlar. Örneğin, double türü şu sabitleri sağlar: Double.NaN, Double.NegativeInfinityve Double.PositiveInfinity.
Gerekli decimal duyarlık derecesi ondalık noktasının sağındaki basamak sayısına göre belirlendiğinde tür uygundur. Bu tür sayılar finansal uygulamalarda, para birimi tutarları (örneğin, 1,00 TL), faiz oranları (örneğin, 2,625%) vb. için yaygın olarak kullanılır. Yalnızca bir ondalık basamak için kesin olan sayılar bile türe göre decimal daha doğru işlenir: örneğin, 0,1, tam olarak bir decimal örnek tarafından temsil edilebilirken, 0,1'i tam olarak temsil eden veya float örneği yokturdouble. Sayısal türlerdeki bu fark nedeniyle, veya float ondalık veri kullandığınızda double aritmetik hesaplamalarda beklenmeyen yuvarlama hataları oluşabilir. Performansı iyileştirmenin decimal doğruluğu sağlamaktan daha önemli olduğu durumlarda yerine kullanabilirsinizdouble. Ancak, performanstaki farklar hesaplama açısından en yoğun uygulamalar dışında fark edilmez. Kaçınmanın decimal bir diğer olası nedeni de depolama gereksinimlerini en aza indirmektir. Örneğin , ML.NET kullanır float çünkü 4 bayt ile 16 bayt arasındaki fark çok büyük veri kümeleri için eklenir. Daha fazla bilgi için bkz. System.Decimal.
bir ifadedeki integral türleriyle float ve double türlerini karıştırabilirsiniz. Bu durumda, tam sayı türleri örtük olarak kayan nokta türlerinden birine dönüştürülür ve gerekirse, float türü örtük olarak öğesine doubledönüştürülür. İfade aşağıdaki gibi değerlendirilir:
- İfadede tür varsa
double, ifade ilişkisel ve eşitlik karşılaştırmalarında veyaboololarak değerlendirilirdouble. - İfadede tür yoksa
double, ifade ilişkisel ve eşitlik karşılaştırmalarında veya olarak değerlendirilirfloatbool.
Ayrıca, bir ifadedeki decimal tam sayı türleriyle türünü de karıştırabilirsiniz. Bu durumda, tam sayı türleri örtük olarak türüne decimal dönüştürülür ve ifade, ilişkisel ve eşitlik karşılaştırmalarında veya bool olarak değerlendirilirdecimal.
bir ifadedeki decimal ve double türleriyle float türünü karıştıramazsınız. 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 türünden veya türüne decimal açıkça dönüştürmeniz gerekir:
double a = 1.0;
decimal b = 2.1m;
Console.WriteLine(a + (double)b);
Console.WriteLine((decimal)a + b);
Kayan nokta değerini biçimlendirmek için standart sayısal biçim dizelerini veya özel sayısal biçim dizelerini kullanabilirsiniz.
Gerçek değişmez değerler
Gerçek değişmez değerin türü, soneki tarafından aşağıdaki gibi belirlenir:
- Soneksiz veya veya
Dsoneki olmayanddeğişmez değer türündedirdouble - veya
Fsoneki ilefdeğişmez değer türündedirfloat - veya
Msoneki ilemdeğişmez değer türündedirdecimal
Aşağıdaki kod, her birinin bir örneğini 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 örnekte _'nin basamak ayırıcısı olarak kullanımı da görülmektedir. Basamak ayırıcısını her türlü sayı sabitiyle kullanabilirsiniz.
Aşağıdaki örnekte gösterildiği gibi bilimsel gösterimi de kullanabilirsiniz, yani gerçek değişmez değerin bir üssü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 noktalı sayısal türler arasında yalnızca bir örtük dönüştürme vardır: from to floatdouble. Ancak, herhangi bir kayan nokta türünü açık atama ile 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# dil belirtimi
Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın: