JavaScript學習筆記---數值

yufang93發表於2017-12-19

奇怪的計算

0.1 + 0.2 === 0.3
//false
0.1 + 0.2 == 0.3
//false

0.3 / 0.1
//2.9999999999999996

(0.3 - 0.2) === (0.2 - 0.1)
//false複製程式碼

按照正常的想法,上面的輸出都是有問題的.

如果0.1+0.2不等於0.3,那麼等於什麼呢?

//0.30000000000000004
複製程式碼

JavaScript 內部,所有數字都是以64位浮點數形式儲存,即使整數也是如此。所以,11.0是相同的,是同一個數

那麼上面的結果是怎麼來的呢?

數值精度

精度範圍-(2^53-1)~(2^53-1)

數值範圍

2^1024~2^(-1023)

最大值

Number.MAX_VALUE
//1.7976931348623157e+308複製程式碼

最小值

Number.MIN_VALUE
//5e-324
複製程式碼

數值的表示

十進位制,十六進位制,科學計數法.

下面兩種情況會自動轉化為科學計數法

  • 總位數超過21位

1234567890123456789012
//1.2345678901234568e+21

123456789012345678901
//123456789012345680000複製程式碼

  • 小數點後面至少有6位0

0.0000003
//3e-7

0.000003
//0.000003複製程式碼

進位制

  • 十進位制:沒有前導0的數值。
  • 八進位制:有字首0o0O的數值,或者有前導0、且只用到0-7的八個阿拉伯數字的數值。
  • 十六進位制:有字首0x0X的數值。
  • 二進位制:有字首0b0B的數值

預設會都轉化為十進位制

特殊值

+0 -0,預設是相等的.

1/0
//Infinity

1/-0
//-Infinity複製程式碼

NaN,表示“非數字”(Not a Number)

出現的場合

  • 字串解析出錯

5 - 'x'
//NaN
複製程式碼

  • 數學函式運算

Math.log(-1)
//NaN複製程式碼

  • 0/0




相關文章