天天看點

JS轉換數值函數Number()、parseInt()、parseFloat()Number()parseInt()parseFloat()

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(而不是數字)。