gpt4 book ai didi

Java DecimalFormat 显示 float 和 double 的不同结果

转载 作者:行者123 更新时间:2023-12-01 06:56:57 25 4
gpt4 key购买 nike

为什么结果不一样?如果我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com