2017-03-17 19 views
1

我想下面的代碼,但在執行344741.79後值顯示爲344741.78差異爲Float類的轉換在Java中

手段之後小數位.79是越來越轉化爲.78,我真的很奇怪,爲什麼我不是轉換後獲得完全相同的值,以及哪種邏輯正在執行此操作?

public static void main(String[] s) { 
    double a = 344741.79; 
    System.out.print(new Float(a)); 
} 
+4

在Java中將'double'轉換爲'float'時會失去一些精度。 – gyre

+2

雖然在這裏可能會也可能不會,但是在將Java源代碼文本轉換爲「double」(也不能表示所有小數部分)時,在編譯期間也會失去精度。 – Thilo

+1

如果您需要精度,您應該使用BigDecimal類 – CocoNess

回答

1

Float只保證準確地儲存6 significant decimal digits。在344741.79的情況下,最近的2個Float是344741.78125(其被打印爲344741.78)和344741.8125(其被打印爲344741.8)。

+0

感謝您的回答和時間:) – Priyanshu

+0

如果您對答案感到滿意,請通過單擊打勾接受它。 –