js-數值轉換

來源:互聯網
上載者:User

標籤:常用   簡單   資料類型   字串包含   識別   str   格式   不能   oat   

javascript去處理很數值

Number():任何 資料類型 轉換成 數值;

parseInt()、parseFloat():把 字串 轉換成 數值;

轉換規則:

Number():

1)如果是Boolean值,true和false將分別轉換為1和0。

2)如果是數字值,只是簡單的傳入和返回。

3)如果是null值,返回0。

4)如果是undefined,返回NaN。

5)如果是字串,遵循下列規則:

如果是字串中只包含數字(包括前面帶正號或負號的情況),則將其轉換為十進位數值,即“1”變成1,“123”會變成123,而“011”會變成11(前置的零被忽略了);
如果字串中包含有效浮點格式,如“1.1”,則將其轉換為對應的浮點數值(同樣也會忽略前置字元為零);
如果字串中包含有效十六進位格式,例如"0xf",則將其他轉換為相同大小的十進位整數值;
如果字串是空的(不包含任何字元),則將其轉換為0;
如果字串中包含除上述格式之外的字元,則將其他轉換成NaN.
6)如果是對象,則調用對象的valueOf()方法,然後依照前面的規則轉換返回的值。如果轉換的結果是NaN,則調用的對象的toString()方法,然後再次依照前面的規則轉換返回的字串值。

ex:

var num1=Number("Hello World"); //NaN

var num2=Number(""); //0

var num3=Number("000011"); //11

var num4=Number(true); //1

由於Number()函數在轉換字串時比較複雜而且不夠合理,因此在處理整數的時候更常用的是parseInt()函數。

parseInt():

在轉換字串時,更多的時看其是否符合數值模式。會忽略字串前面的空格,直至找到第一個非空白字元。

如果第一個字元不是數字字元或都負號,parseInt()就會返回NaN; 也就是說,用parseInt()轉換Null 字元串會返回NaN。
如果第一個字元是數字字元,parseInt()會繼續解析第二個字元,直到解析完所有後續字元或者遇到了一個非數字字元。例如,"1234blue"會被轉換為1234,因為"blue"會被完全忽略。類似地"22.5"會被轉換為22,因為小數點不是有效數字字元。
如果字串以"0x"開頭且後跟數字字元,就會將其當作一個十六進位整數;
如果字串以"0"開頭且後跟數字字元,就會將其當作一個八進位整數;
parseInt()函數增加了第二參數用於指定轉換時使用的基數(即多少進位)如:parseInt("10",16)//按十六進位解析;parseInt("10",8)//按八進位解析
parseFloat():

與parseInt()函數類似,parseFloat()也是從第一個字元(位置0)形如解析每個字元,而且也是一直解析到字串末尾,或者解析到遇見一個無效的浮點數字字元為止。也就是說,字串中的第一個小數點是有效,而第二個小數點就是無效的了,因此它後面的字串將被忽略。例如:"22.34.5"將會轉換為22.34。

除了第一個小數點有效之外,parseFloat()與parseInt()的第二個區別在於它始終都會忽略前置的零。parseFloat()可以識別前面討論過的所有的浮點數值格式,也包括十進位整數格式。但十六進位格式的字串則始終會被轉換成0。由於parseFloat()只解析十進位值,因此它沒有用第二個參數指定基數的用法。

另外,如果字串包含的是一個可解析為整數的數(沒有小數點,或者小數點後面都是零),parseFloat()會返回整數。

ex:

var num1=parseFloat("1234blue"); //1234

var num2=parseFloat("0xA"); //0

var num3=parseFloat("0908.5"); //908.5

var num4=parseFloat("3.125e7"); //31250000

注意:

1)值得注意的是,浮點數值的最高精度是17位小數,但在進行算術計算時其精確度遠遠不如整數。例如0.1加0.2的結果不是0.3,而是0.30000000000000004;99.99加0.1的結果不是100.09而是100.08999999999999。這個小小的舍人誤差會導致無法測試特定的浮點數值。

例如:

if(a+b==0.3) //不要做這樣的測試

2)在計算時有可能會計算出NaN的結果,ECMAScript定義了isNaN()函數。這個函數接受一個參數,該參數可以是任何類型,而函數會幫我們確定這個參數是否“不是數值”。isNaN()在接收到一個值之後,會嘗試將這個值轉換為數值。不能轉換為數值的參數會返回true。

js-數值轉換

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.