這個涉及到二進位制與十進位制的轉換問題。n進製可以理解為:數值×基數的冪,例如我們熟悉的十進位制數123.4=1×10²+2×10+3×(10的0次冪)+4×(10的-1次冪);其它進製的也是同理,例如二進位制數11.01=1×2+1×(2的0次冪)+0+1×(2的-2次冪)=十進位制的3.25。double型別的數值占用64bit,即64個二進位制數,除去最高位表示正負符號的位,在最低位上一定會與實際資料存在誤差(除非實際資料恰好是2的n次方)。
結論:使用double型別的的數值進行計算,其結果是不精確的。
java的double型別數字計算相關
在專案中遇到乙個問題用double型別的數字 小數點後只有兩位 相加或者相減得出的結果並不是預期的結果,乘除也一樣。double d1 1.11 double d2 11.02 列印結果為 12.129999999999999 保留兩位小數 string.format 2f double decim...
在計算數值的時候遇到的double溢位問題
double a 0.01 double b 1.00 double c a b double d a b double e b a system.out.println c system.out.println d system.out.println e 出現的問題是 1.01 0.01 0.9...
double型別的精度問題
一道很簡單的期望題,已知概率p求期望 顯然期望為1 p 但在精度處理上就有點麻煩了,題目要求答案以最簡分數的形式輸出,誤差要小於1e 6 但我一開始錯誤的使用了除法運算求1 p,再求 1 p 1e6 1e6的最簡分數 很顯然精度丟失 這是一條大忌,在高精度問題中一定要避免使用除法 所以正解是求1e6...