Aracılığıyla paylaş


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ğerleri kullanarak bunları başlatabilirsiniz. Tüm kayan noktalı sayısal türler aritmetik, karşılaştırma ve eşitlik işleçlerini destekler.

C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.

Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.

Tavsiye

Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.

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 double örneği yokturfloat. Sayısal türlerdeki bu fark nedeniyle, veya double ondalık veri kullandığınızda float aritmetik hesaplamalarda beklenmeyen yuvarlama hataları oluşabilir. Performansı iyileştirmenin double doğruluğu sağlamaktan daha önemli olduğu durumlarda yerine kullanabilirsinizdecimal. Ancak en yoğun hesaplama gerektiren uygulamalar dışında performans farkları 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 bir double tür varsa, 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 bool olarak değerlendirilirfloat.

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 decimal olarak değerlendirilirbool.

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ğerdeki sonek, türünü belirler:

  • Soneki olmayan veya veya D soneki olan d değişmez değer bir doubledeğeridir.
  • veya F soneki olan f değişmez değer bir floatdeğeridir.
  • veya M soneki olan m değişmez değer bir decimaldeğeridir.

Aşağıdaki kod her türün 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, gerçek değişmez değerin üstel bir bölümünü belirten bilimsel gösterimi de kullanabilirsiniz:

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, açık atamayı kullanarak herhangi bir kayan nokta türünü 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:

Ayrıca bakınız