簡體   English   中英

為什么 Float.toString() 會改變數值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM