Mecbur kalmadıkça float kullanmamalısınız. Vakaların% 99'unda iki kat daha iyi bir seçimdir.
int x = 1111111111;
int y = 10000;
float f = (float) x / y;
double d = (double) x / y;
System.out.println("f= "+f);
System.out.println("d= "+d);
baskılar
f= 111111.12
d= 111111.1111
@ Matt'in yorumu takip ediliyor.
float çok az hassasiyete sahiptir (6-7 basamak) ve oldukça kolay bir şekilde önemli yuvarlama hatası gösterir. double, başka bir 9 basamak doğruluğa sahiptir. Yüzdürme yerine double kullanmanın maliyeti vakaların% 99'unda kavramsal değildir, ancak yuvarlama hatasından kaynaklanan ince bir hatanın maliyeti çok daha yüksektir. Bu nedenle, birçok geliştirici kayan noktayı hiç kullanmamayı önerir ve BigDecimal'i şiddetle tavsiye eder.
Bununla birlikte, makul yuvarlamanın kullanılması koşuluyla , çoğu durumda çiftin kullanılabileceğini buldum .
Bu durumda, int x'in 32-bitlik bir kesinliği varken float'ın 24-bitlik bir kesinliği vardır, 1'e bölmek bile bir yuvarlama hatasına neden olabilir. double öte yandan 53-bit hassasiyete sahiptir ve bu da makul derecede doğru bir sonuç almak için fazlasıyla yeterlidir.