我需要將float
乘以100
以便將€
轉換爲cents
。我遇到的問題是,大數值的計算不正確。針對浮點符號的錯誤是什麼?
例如:
String aa = "1000009.00";
aa = aa.replaceAll(",", ".");
float bb = Float.parseFloat(aa);
bb=Math.round(bb*100);
System.out.println(bb);
我所得到的是:1.00000896E8
所以我知道這是不是因爲float
在Java中的工作方式。 我已經搜索了一個答案,但人們總是說「使用Math.round()
」這不適合我。
我該怎麼做才能防止這種情況發生?
使用'double',而不是'float'。 – Yahya
或者更好的使用'BigDecimal'而不是'float'。 – Henry
'float'具有[6至9位重要精度的十進制數字](https://en.wikipedia.org/wiki/Single-precision_floating-point_format#IEEE_754_single-precision_binary_floating-point_format:_binary32),您的號碼「1000009.00」爲9數字長。你已經超過了'float'的精度。改用「double」(15-17位)或「BigDecimal」(無限精度)。 – Andreas