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

2021-08-20 21:00:32 字數 396 閱讀 5772

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中才會出現,在任何採用二進位制浮點數的程式語言中都會出現這個問題。

php浮點數四捨五入函式

在php中浮點數四捨五入的兩個常用的函式round與此同時ceil函式,可能小數保留位數.round 函式對浮點數進行四捨五入 語法 float round float val int precision 返回將 val 根據指定精度 precision 十進位制小數點後數字的數目 進行四捨五入的結...

float浮點數的四捨五入

前幾天,有個小夥伴在做實驗過程中,發現了乙個奇怪的現象,這個現象就是 他在用printf輸出浮點數的時候,想把資料保留到小數點後的兩位,他是這麼寫的 float c 1.155 printf 2f c 他的書寫是對的,沒有錯誤。但是他發現,當c等於1.555時,保留兩位小數輸出是1.55,而當c等於...

浮點數的二進位制

1.前幾天,我在讀一本c語言教材,有一道例題 include void main void 在我的編譯器下 編譯是會發生錯誤的。錯誤 cannot convert from int to float win7 vc6.0 sp6 執行結果如下 num的值為 9 pfloat的值為 0.000000 ...