2019年2月12日 星期二

[Back To Basic] Javascript - Numbers


  • javascript中的數值只有一種型別: number,整數、小數、指數,型別皆為number
  • number永遠儲存成雙精度浮點數(double precision floating point numbers),依據IEEE 754

精確度



  • 整數最多到15位數
  • 小數計算並非完全精確 e.g. 0.1+0.2
    • 通常先 *10 再 /10解決此問題

數值和字串相加

  • x = 10; y = 20; 相加結果: 30
  • x = "10"; y = "20"; 相加結果: 1020
  • x = 10; y = "20"; 相加結果: 1020
  • x = "10"; y = 20; 相加結果: 1020
任一運算中的變數為字串,結果就變成字串串聯
  • x = "Word"; y = 10; z = 20; 相加結果: Word1020
  • x = 10; y = 20; z = "30"; 相加結果: 3030
javascript的編譯器由左至右運算,只要一碰到字串就會變成字串串聯
  • x = "10"; y="2" x / y 結果: 5
  • x = "10"; y="2" x * y 結果: 20
  • x = "10"; y="2" x - y 結果: 8
除了 + 號之外的運算符號,javascript都會嘗試轉換字串做運算

NaN(Not a number的縮寫)

  • NaN是javascript的保留字,用來表示數值不合法,用非數值的變數運算就會產生此結果
    • e.g. "Text" / 5
  • isNaN(),可用來檢查變數是否為合法的數值
    • isNaN("Text"): true
  • 特例
    • NaN + 10 => NaN
    • NaN + "10" => NaN10
    • typeof NaN => "number"

無窮大/負無窮大

若計算時超出最大數值,則會得到 Infinity 的結果
  • 7 / 0
  • -2 / 0
  • typeof Infinity => "number"

16進制

  • 若以 0x 開頭,則認定為16進制
    • 0xFF => 255
  • 請務必避免 07 開頭,有些javascript的版本會判定為8進制
  • 預設為10進制
    • 若想用其他進制顯示,可用ToString(n進制)
      • 32.ToString(2) => 100000
*.數值的型別也可以是Object,但是請不要使用,作法: var x = new Number(111);

沒有留言:

張貼留言