Alıştırma-kayan nokta türleri

Tamamlandı

Bu alıştırmada, her bir veri türü arasındaki anormal farklılıklar hakkında bilgi edinmek için kayan nokta verileriyle çalışacaksınız.

Kayan nokta, kesirli sayıları temsil eden basit bir değer türüdür. Tam sayıların aksine, belirli bir kayan nokta türünde depolayabileceğiniz maksimum ve minimum değerlerden başka önemli konular vardır.

Kayan nokta türlerini değerlendirme

İlk olarak, her birinin izin verdiği duyarlık basamaklarını değerlendirmeniz gerekir. Duyarlık, ondalık basamağından sonra depolanabilecek değer sayısıdır.

İkinci olarak, değerlerin nasıl depolandığını ve değerin doğruluğunu nasıl etkilediğini düşünmeniz gerekir. Diğer bir deyişle, float ve double değerleri ikili (base 2) biçimde depolanırken decimal ondalık (base 10) biçimde depolanır. Bu neden önemlidir?

İkili kayan nokta değerleri üzerinde matematik işlemi yapmak, ondalık (base 10) matematiğine alışkınsanız sizi şaşırtabilecek sonuçlar üretebilir. Çoğu zaman, ikili kayan nokta matematiği gerçek değere yaklaşık bir değer verir. Bu nedenle float , double büyük sayılar küçük bir bellek parmak izi kullanılarak depolanabileceğinden ve bu sayede yararlı olur; ancak, yalnızca bir yaklaşık olarak yararlı olduğunda kullanılmalıdır. Örneğin, bir video oyununda bir silahın patlama bölgesini hesaplarken birkaç binde bir uzaklaşmak yeterince yakın bir değerdir.

Daha kesin bir yanıt gerektiğinde decimal kullanmanız gerekir. decimal türünün her değeri oldukça büyük bir bellek ayak izine sahiptir ancak matematik işlemleri gerçekleştirmek size daha kesin bir sonuç verir. Bu nedenle, mali verilerle çalışırken ya da bir hesaplamadan doğru bir sonuç almanız gereken herhangi bir senaryoda decimal kullanmanız gerekir.

Adım 1 - .NET Düzenleyicisi’nde önceki alıştırmalardan herhangi bir kodu silme veya açıklama satırı yapma

Önceki alıştırmadan kodu seçin ve geri al ya da del tuşunu seçin. İsteğe bağlı olarak, önceki kodu .NET Düzenleyicisi’nde açıklama satırı yapın.

Adım 2 - Her imzalı tam sayı türü için MinValue ve MaxValue özelliklerini kullanın

Çeşitli veri türleri için değer aralıklarını görmek üzere, .NET düzenleyicisine aşağıdaki kodu girin.

Console.WriteLine("");
Console.WriteLine("Floating point types:");
Console.WriteLine($"float  : {float.MinValue} to {float.MaxValue} (with ~6-9 digits of precision)");
Console.WriteLine($"double : {double.MinValue} to {double.MaxValue} (with ~15-17 digits of precision)");
Console.WriteLine($"decimal: {decimal.MinValue} to {decimal.MaxValue} (with 28-29 digits of precision)");

Adım 3 - Her veri türünün değer aralığını incelemek için kodu çalıştırın

Kodu çalıştırırsanız aşağıdaki çıkışı görürsünüz.

Floating point types:
float  : -3.402823E+38 to 3.402823E+38 (with ~6-9 digits of precision)
double : -1.79769313486232E+308 to 1.79769313486232E+308 (with ~15-17 digits of precision)
decimal: -79228162514264337593543950335 to 79228162514264337593543950335 (with 28-29 digits of precision)

Görebileceğiniz gibi, float double decimal en büyük ve en küçük olası değerleri temsil eden farklı bir gösterim kullanabilirsiniz. Peki bu gösterim ne anlama geliyor?

Büyük kayan nokta değerlerini çözme

Kayan nokta türleri çok sayıda duyarlığa sahip büyük sayılar tutabileceğinden, değerleri "E gösterimi" kullanılarak gösterilebilir ve bu, "' ın gücünden çıkarılan bir" anlamına gelen bilimsel bir gösterim biçimidir. " Bu nedenle, veya gibi bir değer 5E+2 500 , veya ' nin eşdeğeri olduğundan değer olacaktır 5 * 10^2 5 * 10 * 10 .

Özet

  • Kayan nokta türü kesirli sayıları tutabilecek basit bir değer veri türüdür.
  • Uygulamanız için doğru kayan nokta türünü seçmek, yalnızca tutabileceğinden en fazla ve en az değerden fazlasını düşünmeniz gerekir. Ayrıca, ondalığa sonra kaç değerin korunabileceğini, sayıların nasıl depolandığını ve iç depolamanın, matematik işlemlerinin sonucunu nasıl etkileyeceğini göz önünde bulundurmanız gerekir.
  • Sayılar veya üs özellikle büyük büyürken kayan nokta değerleri bazen "E gösterimi" kullanılarak gösterilebilir.
  • Derleyici ve çalışma zamanı, özellikle matematik işlemlerinden ne kadar doğruluğun gerekli olduğu belirlenirken float veya double karşısında decimal değerini çok farklı bir şekilde işler.