涉及小數比較的精度問題

2021-08-20 09:31:09 字數 414 閱讀 6927

double a;

double b

a = log(x);

b = log(y);

然後比較 a   和 b 的大小;

這樣寫看似沒有問題  ,其實有很致命的 bug, 做題的時候很容易出錯。

因為 double  的小數字數是有限的,

如果  log( x)  ,log (y)  是無限迴圈小數,,那麼精度丟失的 很厲害,

所以涉及到可能有無限迴圈的小數比較大小的時候,

1、不要用第三變數去賦值,直接比較就行

比如 : log (x) > log(y) ?

2、用 long double 可以一定程度上緩解精度丟失的程度

(long double)a = log(x);

(long double )b = log(y);

js計算小數精度問題

js進行部分小數運算時,會出現精度問題。解決思路是,把小數同時擴大為10的x冪,返回計算完畢後,再縮小為10的x冪。在math方法上新增加減乘除方法。let extentfns add sub mul div 運算函式 function ufunc type,arg catch e decimald...

討論c c 計算小數的精度問題

求出所有100以下整數與一位小數相乘等於相加的浮點數 這個有bug浮點數計算時精度會出現誤差 除非使用非常精確的型別或限制浮點的位數 比如 include int main a b 會產生這個問題 cout.precision這個讓我非常討厭,乙個偽限制精度 師傅 這個不是bug,而是精度問題,沒有...

js做小數運算精度問題

當js做小數運算時存在bug,大概是因為二進位制和十進位制轉換之間的關係。bug如圖 解決方案 1.加減法可以用引數乘以1000再用結果除以1000。乘除法可以用引數分別 100進行計算後在除以10000 2.使用tofixed 方法,效率貌似沒有第一種高,這裡返回的值一定有兩位小數,要麼後台用do...