[英]Why does Float.toString() change the numeric value?
我有一個關於下面代碼的問題,如果我們使用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
BigDecimal 構造函數很簡單。 給我一個字符串,我會用它創建一個數字。 如果你給我一個數字,我會直接使用他的價值。
由於示例中的 String generate 看起來像8.5899346E9
,因此純數字的值為8589934600
。 如果您發送浮點實例,它將(我猜)與位一起工作以盡可能精確地重新創建值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.