我想了解一個BigDecimal規模,但它行爲怪異,我不明白爲什麼。這裏有幾個例子:BigDecimal規模爲大數
Double d = new Double(1000000d);
int scale = new BigDecimal(d.toString()).scale();
這個例子中的比例是1,這對我來說是正確的。 d.toString()的結果是「1000000.0」。
Double d = new Double(10000000d);
int scale = new BigDecimal(d.toString)).scale();
本例中的比例爲-6。誰能解釋爲什麼? d.toString()的結果是「1.0E7」。
我想到的位數造成這一點,但如果我去:
Double d = new Double(11111111d);
int scale = new BigDecimal(d.toString()).scale();
預期的-8規模,但突然它的0 d.toString的()的結果是「1.1111111E7」。
這些不同的尺度毫無意義的,我讀)規模的Javadoc(後:
返回此BigDecimal的標度。如果爲零或正數,則標度是小數點右側的位數。如果是負數,則該數字的非縮放值乘以10乘以該比例否定的冪。例如,-3的縮放表示未縮放的值乘以1000.
我非常感謝BigDecimal在數字較大時的行爲。
在此先感謝!
在將它傳遞給'new BigDecimal'之前檢查'd.toString()'的值。它可能沒有你認爲它的價值。 – marstran
爲示例添加了d.toString()的結果,對我沒有多大幫助。 –