javascript 最大數值
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-12 09:26:50
0
4
947

在js裡Number.MAX_VALUE代表能夠表示的最大數值。如果超過這個數值就會出現Infinity,但是我下邊的計算很難理解

(Number.MAX_VALUE+123)==Number.MAX_VALUE   //true  why?
(Number.MAX_VALUE+Number.MAX_VALUE)==Number.MAX_VALUE  //false why?
console.log(5.3e-324)  //5e-324 why?

誰理解這是為什麼,能解釋下麼?

曾经蜡笔没有小新
曾经蜡笔没有小新

全部回覆(4)
黄舟
  1. 因為 123 太小,不足以改變高位數表達

  2. 因為 Number.MAX_VALUE 夠大,足以改變高位數表達

  3. 5.3e-324 的 .3 過小

總結: js 在很多時候會很難保證浮點數計算精度,如 0.1 + 0.2 != 0.3 // true

曾经蜡笔没有小新

一個億加1,四捨五入之後還是一個億,差不多一個道理。到不了那麼精確的

世界只因有你


應該只是一種數值的表示吧,如果減號與數字隔開是無法計算的

我想大声告诉你

在第一個範例中,您只需將數字增加一個非常小的數字:根據 1.79^308 計算 123 不算什麼。所以你「失去」了一些精確度:它不會改變數字。

在第二個中,你超過了最大值,所以你的數字不再是數字,而是無限大。

來自 stackoverflow 的 Mistalis
有關 Number.MAX_VALUE 的內容

說白了就是浮點數精度問題!

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板