2016年12月9日 星期五

(js)浮點運算:0.1 + 0.2 != 0.3

> 0.1 + 0.2 == 0.3
false

> 0.1 + 0.2
0.30000000000000004

怎麼解決

就像標準中提到的,我們可以採用一個精確範圍來比較是否相等
x = 0.2;
y = 0.3;
equal = (Math.abs(x - y) < 0.000001)
第二種方法是使用JavaScript內置的函數toPrecision或toFixed來保留一定的精度:
(0.1 + 0.2).toPrecision(10) == 0.3 // string
> true

(0.1 + 0.2).toFixed(10) == 0.3 // string
> true
/////////////////////////////////////////////////////////////////////////
  1. var num = 5.56789;  
  2.    
  3. var a = num.toFixed(); // 6  
  4. var b = num.toFixed(2); // 5.57  
  5. var c = num.toFixed(10); // 5.5678900000  
  6.   
  7. var a1 = num.toPrecision(); // 5.56789  
  8. var b1 = num.toPrecision(2); // 5.6  
  9. var c1 = num.toPrecision(10); // 5.567890000  
/////////////////////////////////////////////////////////////////////////

沒有留言:

張貼留言