使用浮點類型致使計算偏差以及判斷偏差

1.計算偏差spa

浮點的精度是可變的,除非分數是2的整數冪次方,否者沒法用有限的二進制小數表示。ci

即 0.1 分母爲10, 則分數應該是2的3次方至2的4次方之間,具體是多少我也算不出來了···。即這個次方數會爲一個特別長的小數,在有限的長度中沒法體現出來。二進制

則0.1會被表示爲一個十分接近0.1的值,如0.1000000000000000001 或0.099999999999999999float

因此在精確的計算中,使用浮點類型會形成計算的偏差。im

使用decimal能夠解決此問題,不過decimal的範圍比浮點類型來講相對較小,因此在將浮點類型轉換成decimal類型時,有溢出的風險。類型轉換

2.判斷偏差

基於上述解釋

float num1=0.1F;

decimal num2=0.1M;

則 num1!=num2;

相關文章
相關標籤/搜索