double精度丟失

2021-09-29 20:54:37 字數 1106 閱讀 1247

#include#includeint main()

輸出:124

#include#includeint main()

輸出:125

#include#includeint main()

輸出:125

#include#includeint main()

輸出:1//輸出均正確

#include#includeint main()

輸出:24//(輸出精度均丟失1)

#include#includeint main()

輸出:999999999

#include#includeint main()

輸出:999999999

#include#includeint main()

輸出:1000000000

#include#includeint main()

輸出:1000000000

總結**:用編譯器mingw gcc 4.7.2 32-bit編譯**

當引數和結果均為整型,當引數涉及到五的倍數,輸出結果精度可能會丟失1

當引數和結果均為整型,當結果無限逼近int的儲存範圍,輸出結果精度丟失1

原因猜想:

編譯器的配置問題

pow函式為double型別,返回值採用數值逼近的方法得到的,強制型別轉換發生截斷,精度丟失1

解決方法:

四捨五入:

2.將pow函式 結果 換成浮點型

double精度問題

double 相乘向上取整 param params return public static int upscore double d1,double d2 bigdecimal.setscale 方法用於格式化小數點 setscale 1 表示保留一位小數,預設用四捨五入方式 setscale ...

double乘法失去精度,double保留小數問題

情景 首先相除,然後 100 小數點後保留四位位小數 string result string.format 4f dividend total double r double.valueof result 接上面的 double result r 100 這是double可能會丟失精度,比如 0....

解決double型別資料四則運算精度丟失問題

直接對double型別的資料進行計算,很容易發生精度丟失問題 使用bigdecimal類計算,可以避免精度丟失 double num2 double.parsedouble numstack.pop double num1 double.parsedouble numstack.pop bigdec...