詳解JS中Number()、parseInt()和parseFloat()的區別


三者的作用: 
Number(): 可以用於任何數據類型轉換成數值; 
parseInt()、parseFloat(): 專門用於把字符串轉換成數值; 
一、Number( ):

(1)如果是Boolean值,true和false將分別轉換為1和0。 
(2)如果是數字值,只是簡單的傳入和返回。 
(3)如果是null值,返回0。 
(4)如果是undefined,返回NaN。 
(5)如果是字符串,遵循下列規則: 
如果字符串截去開頭和結尾的空白字符后,不是純數字字符串,那么最終返回結果為NaN。 
如果是字符串中只包含數字(包括前面帶正號或負號的情況),則將其轉換為十進制數值,即“1”變成1,“123”會變成123,而“011”會變成11(前導的零被忽略了); 
如果字符串中包含有效的浮點格式,如“1.1”,則將其轉換為對應的浮點數值(同樣也會忽略前導零); 
如果字符串中包含有效的十六進制格式,例如”0xf”,則將其他轉換為相同大小的十進制整數值; 
如果字符串是空的(不包含任何字符),則將其轉換為0; 
如果字符串中包含除上述格式之外的字符,則將其他轉換成NaN. 
(6)如果是對象,則調用對象的valueOf()方法,然后依照前面的規則轉換返回的值。如果轉換的結果是NaN,則調用的對象的toString()方法,然后再次依照前面的規則轉換返回的字符串值。

var num1=Number("Hello World"); //NaN var num2=Number(""); //0 var num3=Number("000011"); //11 var num4=Number(true); //1 var num5=Number("num123") //NaN
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

二、parseInt( ): 
parseInt()函數可以將字符串轉換成一個整數,與Number()函數相比,parseInt()函數不僅可以解析純數字字符串,也可以解析以數字開頭的部分數字字符串(非數字部分字符串在轉換過程中會被去除)。 
(1)如果第一個字符不是數字字符或者負號,parseInt()就會返回NaN; 也就是說,用parseInt()轉換空字符串會返回NaN。 
(2)如果第一個字符是數字字符,parseInt()會繼續解析第二個字符,直到解析完所有后續字符或者遇到了一個非數字字符。 
(3)如果字符串以”0x”開頭且后跟數字字符,就會將其當作一個十六進制整數。 
(4)如果字符串以”0”開頭且后跟數字字符,就會將其當作一個八進制整數。 
(5)parseInt()函數增加了第二參數用於指定轉換時使用的基數(即多少進制)。 
(6)當parseInt()函數所解析的是浮點數字符串時,取整操作所使用的方法為“向下取整”。

var num1=parseInt("num123"); //NaN var num2=parseInt(""); //NaN var num3=parseInt("123.45") //123 var num4=parseInt("101010",2) //42 var num5=parseInt("123num") //123 var num6=parseInt("0xff") //255
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

三、parseFloat( ): 
與parseInt()一樣,parseFloat()也可以解析以數字開頭的部分數字字符串(非數字部分字符串在轉換過程中會被去除)。與parseInt()不同的是,parseFloat()可以將字符串轉換成浮點數;但同時,parseFloat()只接受一個參數,且僅能處理10進制字符串。 
(1)字符串中的第一個小數點是有效的,而第二個小數點就是無效的了,因此它后面的字符串將被忽略。 
(2)如果字符串包含的是一個可解析為整數的數(沒有小數點,或者小數點后面都是零),parseFloat()會返回整數。

var num1=parseFloat("1234blue"); //1234 var num2=parseFloat("0xA"); //0 var num3=parseFloat("0908.5"); //908.5 var num4=parseFloat("3.125e7"); //31250000 var num5=parseFloat("123.45.67") //123.45 var num6=parseFloat("") //NaN var num7=parseFloat("num123") //NaN

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com