幽默:Javascript為什麼算術沒算好?

banq發表於2022-02-10
JS的整數轉換函式parseInt在轉換特別大的整數會出錯:

parseInt(0.5);      // => 0
parseInt(0.05);     // => 0
parseInt(0.005);    // => 0
parseInt(0.0005);   // => 0
parseInt(0.00005);  // => 0
parseInt(0.000005); // => 0
parseInt(0.0000005); // => 5

幽默:Javascript為什麼算術沒算好?

parseInt函式預設將輸入引數視同“字串String”型別,然後才開始解析這個輸入引數;

如果輸入引數不是字串,則轉化為“字串String”型別。

但是對於對於非常小的和非常大的數字,在其被轉換為字串的同時轉換為指數表示。

0.0000005 :"5e-7"
999999999999999999999 (21 9) : "1e+21"

那麼對於

parseInt(0.0000005)

則轉為字串的指數:

parseInt("5e-7")

最後輸出:

5

 

相關文章