Çözüldü Float virgülden sonraki basamak sayısı nasıl sınırlanır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

KOUsoftware

Hectopat
Katılım
1 Nisan 2020
Mesajlar
155
Yer
İstanbul
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Java:
float nmb1, nmb2;
float result = nmb1 + nmb2;

Buradaki.

Java:
 result

Değerini virgülden sonra sadece 2 basamak tutacak şekilde nasıl tanımlayabilirim?
 
Çözüm
Yazdırma değil bellekte tutmak için onu biliyorum.
Sonrasında stringe dönüştüreceğim için virgülden sonra sadece 2 basamak tutmasını istiyorum.

Kod:
float sayi = 3.14159f;
    DecimalFormat df = new DecimalFormat("#.##");
    System.out.println(df.format(sayi));

Aynı mantık tanımlarken df e göre tanımlayabilirsiniz.
Hocam Google a yazınca direk çıkıyor, araştırmayı öğrenmeden yazılımı öğrenemezsiniz.

System.out.println(String.format("%.2f", result));
Yazdırma değil bellekte tutmak için onu biliyorum.
Sonrasında stringe dönüştüreceğim için virgülden sonra sadece 2 basamak tutmasını istiyorum.
 
Yazdırma değil bellekte tutmak için onu biliyorum.
Sonrasında stringe dönüştüreceğim için virgülden sonra sadece 2 basamak tutmasını istiyorum.

Kod:
float sayi = 3.14159f;
    DecimalFormat df = new DecimalFormat("#.##");
    System.out.println(df.format(sayi));

Aynı mantık tanımlarken df e göre tanımlayabilirsiniz.
 
Çözüm
Bellekte tutmak için mümkün değil, çünkü float şöyle çalışıyor, binary olacak şekilde 1.M x 2^E olacak şekilkde bellekte tutuyor. M = mantissa ve E = exponent. IEEE 754 standardı float diye araştırırsan daha detaylı bilgi bulabilirsin. Binary bir şekilde tutulduğundan dolayı aslında onladıklı sayı gibi tutulmuyor. Buna da müdahele etmek için bitwise işlemler yapman gerekir ama sonuç olarak bellekte 32 bit yer işgal etmeye devam eder.
 

Geri
Yukarı