1. 程式人生 > >JS中非數值與數值間的轉化

JS中非數值與數值間的轉化

非數值與數值間的轉化有 3 個函式可以把非數值轉化為數值: Number()、parseInt()、parseFloat()

  1. Number() 可以用於任何資料型別的轉換
  • 如果是 Boolean 值,true 和 false 將分別被轉換為 1 和 0。
  • 如果是數字值,只是簡單的傳入和返回。
  • 如果是 null 值,返回 0。
  • 如果是 undefined,返回 NaN。
  • 如果是字串,遵循下列規則:
    • 如果字串中只包含數字(包括前面帶正號或負號的情況),則將其轉換為十進位制數值,即”1” 會變成 1,”123”會變成 123,而”011”會變成 11(注意:前導的零被忽略了);
    • 如果字串中包含有效的浮點格式,如”1.1”,則將其轉換為對應的浮點數值(同樣,也會忽 略前導零);
    • 如果字串中包含有效的十六進位制格式,例如”0xf”,則將其轉換為相同大小的十進位制整 數值;
    • 如果字串是空的(不包含任何字元),則將其轉換為 0;
    • 如果字串中包含除上述格式之外的字元,則將其轉換為 NaN。
    • 如果是物件,則呼叫物件的 valueOf()方法,然後依照前面的規則轉換返回的值。
    • 如果轉換的結果是 NaN,則呼叫物件的 toString()方法,然後再次依照前面的規則轉換返回的字串值。
var num1 =
Number("Hello World!") //NaN var num2 = Number("") //0 var num3 = Number("000011") //11 var number4 = Number(true) //1
  1. parseInt() 專用於字串轉數值(建議無論在什麼情況下都指定基數)
var num1 = parseInt("123blue") //123
var num2 = parseInt("")        //NaN
var num3 = parseInt(0xA)       //十六進位制數
var num4 = parseInt
(22.2) //22 var num5 = parseInt("070") //八進位制數 var num6 = parseInt("70") //十進位制數 var num7 = parseInt("0xf") //15(十六進位制數) //為了減少誤差,更為精確,可以提供第二個引數:轉換時使用的基數(即多少進位制) var num8 = parseInt("0xaf", 16) //175 //當提供第二個引數時,字串不用特意標明為幾進位制,即字串前面不用帶 "0x" var num9 = parseInt("AF", 16) //175 var num10 = parseInt("AF") //NaN
  1. parseFloat() 專用於字串轉數值(只解析十進位制,沒有第二個引數)
var num1 = parseFloat("123blue") //123 (整數)
var num2 = parseFloat("0xA")     //0
var num3 = parseFloat("22.5")    //22.5
var num4 = parseFloat("22.34.5") //22.34
var num5 = parseFloat("0908.5")  //908.5
var num6 = parseFloat("3.125e7") //31250000