2
我有一个关于下面的代码的问题,如果我们使用Float.toString()
的方法,它会做一些舍入的数字。它为什么这样做?这背后有什么具体的逻辑吗?为什么Float.toString()更改数值?
我也看过Float.toString()
的内部代码。它叫FloatingDecimal(f).toJavaFormatString()
。
public static void main(String[] args) {
Float f = Float.intBitsToFloat(1342177280);
String simpleString = new BigDecimal(f).toPlainString();
System.out.println("simpleString value " + simpleString);
String withToString = new BigDecimal(Float.toString(f)).toPlainString();
System.out.println("withToString value " + withToString);
}
输出是这样
simpleString value 8589934592
withToString value 8589934600 //here value changed
将Float更改为Double。我只能猜测,尾数部分大于Float的精度。 –
只是因为Float.toString返回这个:8.5899346E9所以BigDecimal只能使用剩下的东西 – AxelH
是的,它看起来像是在浮动的toString实现中选择的精度, –