Mus*_*eas 0 java floating-point double decimalformat
为什么结果不同?如果我使用浮动它得到,675如果我使用双我得到,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
Run Code Online (Sandbox Code Playgroud)
谢谢
如果我使用浮动它得到,675如果我使用双我得到,674 ...不是很奇怪?
不是特别.您正在格式化不同的值.特别是,假设您实际更改了代码以便编译(使用ffloat 的后缀),即使您指定了 9位数,float也只能可靠地表示7.
无论是数字是准确 12345.6745.实际上,确切的值是:
f = 12345.6748046875
d = 12345.674499999999170540831983089447021484375
Run Code Online (Sandbox Code Playgroud)
看看那些,很明显为什么第三个小数位是5 f和4 d.
如果你想保留十进制数字,你应该考虑使用BigDecimal.