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實現中選擇的精度, –