为什么结果不一样? 如果我使用 float,它会得到 675,如果我使用 double,我会得到 674...这不是很奇怪吗?
float f = 12345.6745;
double d = 12345.6745;
Locale l = Locale.forLanguageTag("es-ES");
DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(l);
print(df.format(f));
>> 12.345,675
l = Locale.forLanguageTag("es-ES");
DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(l);
print(df.format(d));
>> 12.345,674
谢谢
最佳答案
If i use float it get ,675 and if i use double i get ,674... isnt that weird?
不是特别。您正在格式化不同的值。特别是,假设您实际上更改了代码,以便它能够编译(使用 float 的 f
后缀),即使您指定> 9 位数字,float
只能可靠地表示 7。
这两个数字都不完全 12345.6745。事实上,确切的值是:
f = 12345.6748046875
d = 12345.674499999999170540831983089447021484375
看看这些,很明显为什么 f
的小数点后第三位是 5,d
的小数点后第三位是 4。
如果您想保留十进制数字,您应该考虑使用 BigDecimal
.
关于Java DecimalFormat 显示 float 和 double 的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600376/