非數(shù)值轉(zhuǎn)化為數(shù)值

有三個函數(shù)可以把非數(shù)值轉(zhuǎn)化為數(shù)值

  • Number ()
  • parseInt ()
  • parseFloat ()

Number ()

  1. 如果是Boolean值,true 返回 1,false 返回 0 。
Number(true)    //1
Number(false)   //0
  1. 如果是數(shù)字,就是原樣
Number(3.1415)    //3.1415
  1. 如果是null,返回 0
Number(null)  //0
  1. 如果是undefined,返回NaN
Number(undefined)   //NaN
  1. 如果是字符串,有以下規(guī)則
  • 如果是字符串中只包含數(shù)字(包括前面帶正號或負(fù)號的情況),則將其轉(zhuǎn)化成十進(jìn)制數(shù)值,
Number ('123')    //123
Number ('+123')   //123 
Number ('-123')   //-123
Number ('0110')   //110  前面的0會忽略
  • 如果字符串中包含的有效的浮點(diǎn)數(shù),就會轉(zhuǎn)化成對應(yīng)的浮點(diǎn)數(shù),前面的0會忽略
Number ('3.1415')    //3.1415
Number ('03.1415')   //3.1415
  • 如果字符串中包含有效的十六進(jìn)制格式,前面為0x的格式,會自動轉(zhuǎn)化成相同大小的十進(jìn)制數(shù)。
Number ('0x11')      //17
  • 如果字符串是空字符串,則返回 0
Number ('')          //0
  • 如果字符串中包含上述格式外的其他字符,則轉(zhuǎn)化成NaN
var x
Number (x)        //NaN
// 如果 x 沒有用 var 聲明過,就會報錯。

parseInt ()

  • parseInt方法用于將 字符串 轉(zhuǎn)為整數(shù)。返回值只有兩種可能,不是一個十進(jìn)制整數(shù),就是NaN。
parseInt ('520')       //520   整數(shù)轉(zhuǎn)化成整數(shù)
parseInt ('3.1415')    //3     浮點(diǎn)數(shù)轉(zhuǎn)化前面的整數(shù)部分
parseInt ('    11')    //11    前面的空格會忽略
parseInt ('000011')    //11    前面的0會忽略
  • 如果parseInt的參數(shù)不是字符串,則會先轉(zhuǎn)為字符串再轉(zhuǎn)換。
parseInt(1.23) // 1
// 等同于
parseInt('1.23') // 1
  • 字符串轉(zhuǎn)為整數(shù)的時候,是一個個字符依次轉(zhuǎn)換,如果遇到不能轉(zhuǎn)為數(shù)字的字符,就不再進(jìn)行下去,返回已經(jīng)轉(zhuǎn)好的部分。
parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') // 15
//parseInt的參數(shù)都是字符串,結(jié)果只返回字符串頭部可以轉(zhuǎn)為數(shù)字的部分。
  • 如果字符串的第一個字符不能轉(zhuǎn)化為數(shù)字(后面跟著數(shù)字的正負(fù)號除外),返回NaN。
parseInt('abc')   // NaN
parseInt('.3')    // NaN
parseInt('')      // NaN
parseInt('+')     // NaN
parseInt('+1')    // 1
  • parseInt方法還可以接受第二個參數(shù)(2到36之間),表示被解析的值的進(jìn)制,返回該值對應(yīng)的十進(jìn)制數(shù)。默認(rèn)情況下,parseInt的第二個參數(shù)為10,即默認(rèn)是十進(jìn)制轉(zhuǎn)十進(jìn)制。
parseInt('1000', 10)    // 1000  以十進(jìn)制解讀(默認(rèn))
parseInt('1000', 2)     // 8    以二進(jìn)制解讀
parseInt('1000', 6)     // 216   以六進(jìn)制解讀
parseInt('1000', 8)     // 512   以八進(jìn)制解讀
parseInt('10', 37) // NaN   進(jìn)制超出范圍,就返回 NaN
parseInt('10', 1) // NaN  進(jìn)制超出范圍,就返回 NaN
parseInt('10', 0) // 10
parseInt('10', null) // 10
parseInt('10', undefined) // 10  第二個參數(shù)是0、null、undefined 則直接忽略

parseFloat ()

  • parseFloat用于將一個字符串轉(zhuǎn)為浮點(diǎn)數(shù)。
parseFloat('3.14')         // 3.14  浮點(diǎn)數(shù)轉(zhuǎn)浮點(diǎn)數(shù)
parseFloat('314e-2')       // 3.14  
parseFloat('0.0314E+2')    // 3.14  科學(xué)計數(shù)法轉(zhuǎn)換
parseFloat ('3.14abc')     // 3.14  轉(zhuǎn)換前面的數(shù)值部分
parseFloat ('    3.14')    // 3.14
parseFloat ('00003.14')    // 3.14  前面的 0 和空格忽略
  • 如果第一個字符不能轉(zhuǎn)化成浮點(diǎn)數(shù),就返回NaN
parseFloat([])     // NaN  空數(shù)組返回 NaN
parseFloat('FF2')  // NaN  第一個字符不能轉(zhuǎn)化浮點(diǎn)數(shù)
parseFloat('')     // NaN  空字符串轉(zhuǎn)化為 NaN

parseFloat () 和 Number () 的區(qū)別

parseFloat(true)       // NaN
Number(true)           // 1

parseFloat(null)       // NaN
Number(null)           // 0

parseFloat('')         // NaN
Number('')             // 0

parseFloat('123.45#')  // 123.45
Number('123.45#')      // NaN
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容