Share via


Kayan nokta sayısal türleri (C# başvurusu)

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 Duyarlık Size .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 to ±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 varsadouble, ifade ilişkisel ve eşitlik karşılaştırmalarında veya bool olarak değerlendirilirdouble.
  • İfadede tür yoksadouble, 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 D soneki olmayan d değişmez değer türündedirdouble
  • veya F soneki ile f değişmez değer türündedirfloat
  • veya M soneki ile m değ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 ayrıca basamak ayırıcısı olarak kullanımı _ gösterilmektedir. Basamak ayırıcısını her türlü sayısal değişmez değerle 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# dili belirtimi

Daha fazla bilgi için C# dil belirtiminin aşağıdaki bölümlerine bakın:

Ayrıca bkz.