1. 程式人生 > >js中二進位制浮點數和四捨五入錯誤

js中二進位制浮點數和四捨五入錯誤

js採用IEEE-754浮點數表示法(幾乎所有現代程式語言採用),這是一種二進位制表示法,可以精確的表示分數如 1/2、1/4、1/8和1/1024。但遺憾的是我們經常用的分數(特別是金融方面)都是十進位制分數1/10、1/100等。二進位制浮點數表示法並不能精確表示累0.1這簡單的數字。

js中的數字具有足夠的精度,並可以即期近似於0.1。但數字不能精確表述的確帶來一些問題。如

var x = 0.3-0.2

var y = 0.2-0.1

x == y    //false兩值不相等

由於舍入誤差。0.3-0.2的近似差值使勁上並不等於02.-0.1的近視差。但x和y的值非常接近彼此和最終的正確值。

 

注意:這種情況並不是js中才會出現,在任何採用二進位制浮點數的程式語言中都會出現這個問題。