JS中有三種函數可以将非數值轉換成數值:Number()、parseInt()和parseFloat()。第一個函數,即轉型函數Number()可以用于任何資料類型,而另外兩個函數則專門用于把字元串轉換成數值。這3個函數對于同樣的輸入會傳回不同的結果。
Number()
Number()函數的轉換規則如下:
- 如果參數是Date對象,傳回從1970年1月1日至今的毫秒數。
- 如果是Boolean值,true和false将分别被替換為1和0
- 如果是數字值,隻是簡單的傳入和傳回
- 如果是null值,傳回0
- 如果是undefined,傳回NaN
- 如果是字元串,遵循下列規則:
- 如果字元串隻包含數字(包括十六進制格式“0x”),則将其轉換成對應的十進制。
- 如果字元串是空的,傳回0。
- 如果字元串包含其它字元,傳回NaN。
- 如果是對象,則調用對象的valueOf()方法,然後依照前面的規則轉換傳回的值。如果轉換的結果是NaN,則調用對象的toString()方法,然後再依次按照前面的規則轉換傳回的字元串值。
document.write(Number(true)+"<br/>"); //傳回1
document.write(Number(false)+"<br/>"); //傳回0
document.write(Number(null)+"<br/>"); //傳回0
document.write(Number(undefined)+"<br/>"); //傳回NaN
document.write(Number("001")+"<br/>"); //傳回1
document.write(Number("001.1")+"<br/>"); //傳回1.1
document.write(Number("0x10")+"<br/>"); //傳回16
document.write(Number(new String("11aa"))+"<br/>"); //傳回NaN
parseInt()
傳回由字元串轉換得到的整數。
parseInt(numString, [radix])
參數
- numString
- 必選項。要轉換為數字的字元串。 radix
- 可選項。在 2 和 36 之間的表示 numString 所儲存數字的進制的值。如果沒有提供,則字首為 '0x' 的字元串被當作十六進制,字首為 '0' 的字元串被當作八進制。所有其它字元串都被當作是十進制的。
說明
parseInt()方法傳回與儲存在numString中的數字值相等的整數。如果numString的字首不能解釋為整數,則傳回NaN(而不是數字)。它會忽略字元串前面的空格,直至找到第一個非空格字元。
示例
document.write(parseInt("1")+"<br/>"); //傳回1
document.write(parseInt(" 1")+"<br/>"); //傳回1
document.write(parseInt("1.1")+"<br/>"); //傳回1
document.write(parseInt("11aa")+"<br/>"); //傳回11
document.write(parseInt("020")+"<br/>"); //傳回16(八進制)
document.write(parseInt("")+"<br/>"); //傳回NaN
document.write(parseInt("AF")+"<br/>"); //傳回NaN
document.write(parseInt("AF",16)+"<br/>"); //傳回175
document.write(parseInt("0xAF")+"<br/>"); //傳回175
parseFloat()
傳回由字元串轉換得到的浮點數。
parseFloat(numString)
必選項 numString 參數是包含浮點數的字元串。
說明
parseFloat()傳回與numString中儲存的數相等的數字表示。如果numString的字首不能解釋為浮點數,則傳回NaN(而不是數字)。