前端面試題 - 爲什麼在JS中0.1+0.2!=0.3?以及IEE 754標準

前端面試題 - 爲什麼在JS中0.1+0.2!=0.3?以及IEE 754標準

JavaScript使用Number類型表示數字(整數和浮點數),遵循 IEEE 754 標準 通過64位來表示一個數字。

首先,計算機無法直接對十進制的數字進行運算,這是硬件物理特性已經決定的。這樣運算就分成了兩個部分: 先按照IEEE 754轉成相應的二進制,然後按照二進制運算。

回到0.1+0.2的例子上,首先轉成二進制後,二進制數字是無限循環的,但是由於IEEE 754尾數位數限制, 需要將後面多餘的位截掉,這樣在進制之間的轉換中精度已經損失。

由於指數位數不相同,運算時需要對階運算 這部分也可能產生精度損失,兩步的精度損失最後的結果轉換成十進制之後就是0.30000000000000004。

只要是遵循遵循 IEEE 754 標準的語言都會有這個問題。

通俗易懂的前端面試題網站: https://www.front-interview.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章