我想下面的代碼,但在執行344741.79
後值顯示爲344741.78
差異爲Float類的轉換在Java中
手段之後小數位.79
是越來越轉化爲.78
,我真的很奇怪,爲什麼我不是轉換後獲得完全相同的值,以及哪種邏輯正在執行此操作?
public static void main(String[] s) {
double a = 344741.79;
System.out.print(new Float(a));
}
我想下面的代碼,但在執行344741.79
後值顯示爲344741.78
差異爲Float類的轉換在Java中
手段之後小數位.79
是越來越轉化爲.78
,我真的很奇怪,爲什麼我不是轉換後獲得完全相同的值,以及哪種邏輯正在執行此操作?
public static void main(String[] s) {
double a = 344741.79;
System.out.print(new Float(a));
}
Float
只保證準確地儲存6 significant decimal digits。在344741.79的情況下,最近的2個Float
是344741.78125(其被打印爲344741.78
)和344741.8125(其被打印爲344741.8
)。
感謝您的回答和時間:) – Priyanshu
如果您對答案感到滿意,請通過單擊打勾接受它。 –
在Java中將'double'轉換爲'float'時會失去一些精度。 – gyre
雖然在這裏可能會也可能不會,但是在將Java源代碼文本轉換爲「double」(也不能表示所有小數部分)時,在編譯期間也會失去精度。 – Thilo
如果您需要精度,您應該使用BigDecimal類 – CocoNess