javascript中如何將字符串轉(zhuǎn)換成數(shù)字
轉(zhuǎn)換方法
- 1、利用“-”、“*”、“/”、“%”、“++”、“--”等運(yùn)算符;
- 2、使用“Number(值)”語句;
- 3、使用“parseInt(stringNum)”語句;
- 4、使用“parseFloat(stringNum)”語句。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版。
javascript將字符串轉(zhuǎn)換成數(shù)字
方法1
使用-、*、/、%、++、--等運(yùn)算符
JavaScript 會(huì)自動(dòng)將字符串轉(zhuǎn)換成數(shù)字,對(duì)無法轉(zhuǎn)換為數(shù)字的則轉(zhuǎn)換為 NaN。例如:
alert("30"/5); //除運(yùn)算,結(jié)果為:6 alert("15"-5); //減運(yùn)算,結(jié)果為:10 alert("20"*"a"); //乘運(yùn)算,結(jié)果為:NaN alert("20"%"3"); //取模運(yùn)算,結(jié)果為:2
var num1 = "6"; var num2 = "6"; var num3 = "a"; alert(++num1); //將字符串轉(zhuǎn)換為數(shù)字再進(jìn)行++運(yùn)算,結(jié)果為:7 alert(--num2); //將字符串轉(zhuǎn)換為數(shù)字再進(jìn)行--運(yùn)算,結(jié)果為:5 alert(++num3); //字符串無法轉(zhuǎn)換為數(shù)字,結(jié)果為:NaN
方法2
使用Number()函數(shù)
Number()函數(shù)可以將參數(shù)轉(zhuǎn)換為一個(gè)數(shù)字
使用格式如下:
Number(value)
Number() 對(duì)參數(shù) value 進(jìn)行整體轉(zhuǎn)換,當(dāng)參數(shù)值中任何地方包含了無法轉(zhuǎn)換為數(shù)字的符號(hào)時(shí),轉(zhuǎn)換失敗,此時(shí)將返回 NaN,否則返回轉(zhuǎn)換后的數(shù)字。
Number() 對(duì)參數(shù)進(jìn)行數(shù)字轉(zhuǎn)換時(shí),遵循以下一些規(guī)則:
- 如果參數(shù)中只包含數(shù)字時(shí),將轉(zhuǎn)換為十進(jìn)制數(shù)字,忽略前導(dǎo) 0 以及前導(dǎo)空格;如果數(shù)字前面為-,-會(huì)保留在轉(zhuǎn)換結(jié)果中;如果數(shù)字前面為+,轉(zhuǎn)換后將刪掉+號(hào);
- 如果參數(shù)中包含有效浮點(diǎn)數(shù)字,將轉(zhuǎn)換為對(duì)應(yīng)的浮點(diǎn)數(shù)字,忽略前導(dǎo) 0 以及前導(dǎo)空格;如果數(shù)字前面為-,-會(huì)保留在轉(zhuǎn)換結(jié)果中;如果數(shù)字前面為+,轉(zhuǎn)換后將刪掉+號(hào);
- 如果參數(shù)中包含有效的十六進(jìn)制數(shù)字,將轉(zhuǎn)換為對(duì)應(yīng)大小的十進(jìn)制數(shù)字;
- 如果參數(shù)為空字符串,將轉(zhuǎn)換為 0;
- 如果參數(shù)為布爾值,則將 true 轉(zhuǎn)換為 1,將 false 轉(zhuǎn)換為 0;
- 如果參數(shù)為 null,將轉(zhuǎn)換為 0;
- 如果參數(shù)為 undefined,將轉(zhuǎn)換為 NaN;
- 如果參數(shù)為 Date 對(duì)象,將轉(zhuǎn)換為從 1970 年 1 月 1 日到執(zhí)行轉(zhuǎn)換時(shí)的毫秒數(shù);
- 如果參數(shù)為函數(shù)、包含兩個(gè)元素以上的數(shù)組對(duì)象以及除 Date 對(duì)象以外的其他對(duì)象,將轉(zhuǎn)換為 NaN;
如果在參數(shù)前面包含了除空格、+和-以外的其他特殊符號(hào)或非數(shù)字字符,或在參數(shù)中間包含了包括空格、+和-的特殊符號(hào)或非數(shù)字字符,將轉(zhuǎn)換為 NaN。
轉(zhuǎn)換示例:
alert(Number("0010")); ?//去掉兩個(gè)前導(dǎo)0,結(jié)果為:10 alert(Number("+010")); ?//去掉前導(dǎo)0和+,結(jié)果為:10 alert(Number("-10")); ?//轉(zhuǎn)換后保留“-”號(hào),結(jié)果為:-10 alert(Number('')); ? ? ?//空字符串的轉(zhuǎn)換結(jié)果為:0 alert(Number(true)); ? //布爾值true的轉(zhuǎn)換結(jié)果為:1 alert(Number(null)); ? //null值的轉(zhuǎn)換結(jié)果為:0 var d = new Date(); ? ? ?//創(chuàng)建一個(gè)Date對(duì)象 alert(Number(d)); ? ? //轉(zhuǎn)換Date對(duì)象,結(jié)果為1970.1.1至執(zhí)行轉(zhuǎn)換時(shí)的毫秒數(shù):1511351635179 alert(Number("100px")); ? //參數(shù)中包含了不能轉(zhuǎn)換為數(shù)字的字符px,結(jié)果為:NaN alert(Number("100 01")); ?//參數(shù)中包含了空格,導(dǎo)致整個(gè)參數(shù)不能轉(zhuǎn)換,結(jié)果為:NaN alert(Number("100-123")); //參數(shù)中包含了“-”,導(dǎo)致整個(gè)參數(shù)不能轉(zhuǎn)換,結(jié)果為:NaN var a; ? ? ? ? ? ? ? ? ? //聲明變量 alert(Number(a)); ? ? //變量a沒有賦值,因而a的值為undefined,轉(zhuǎn)換undefined的結(jié)果為:NaN var fn = function (){alert(1);}; //創(chuàng)建一個(gè)函數(shù)對(duì)象 alert(Number(fn)); ? ? //轉(zhuǎn)換函數(shù),結(jié)果為:NaN alert(Number(window)); //轉(zhuǎn)換window對(duì)象,結(jié)果為:NaN
從上述示例中,我們也可以看到,Number() 是從整體上進(jìn)行轉(zhuǎn)換的,任何一個(gè)地方含有非法字符,都將導(dǎo)致轉(zhuǎn)換無法成功。
接下來將介紹的兩個(gè)函數(shù)與 Number() 不同的是,轉(zhuǎn)換是從左到右逐位進(jìn)行轉(zhuǎn)換,任何一位無法轉(zhuǎn)換時(shí)立即停止轉(zhuǎn)換,同時(shí)返回已成功轉(zhuǎn)換的值。
方法3
使用parseInt()函數(shù)
parseInt()函數(shù)可以將參數(shù)轉(zhuǎn)換為一個(gè)整數(shù)
使用格式如下:
parseInt(stringNum,[radix])
stringNum 參數(shù)為需要轉(zhuǎn)換為整數(shù)的字符串;radix 參數(shù)為 2~36 之間的數(shù)字,表示 stringNum 參數(shù)的進(jìn)制數(shù),取值為 10 時(shí)可省略。
parseInt() 的作用是將以 radix 為基數(shù)的 stringNum 字符串參數(shù)解析成十進(jìn)制數(shù)。若 stringNum 字符串不是以合法的字符開頭,則返回 NaN;解析過程中如果遇到不合法的字符,將馬上停止解析,并返回已經(jīng)解析的值。
parseInt() 在解析字符串為整數(shù)時(shí),遵循以下規(guī)則:
- 解析字符串時(shí),會(huì)忽略字符串前后的空格;如果字符串前面為-,-會(huì)保留在轉(zhuǎn)換結(jié)果中;如果數(shù)字前面為+,轉(zhuǎn)換后將刪掉+號(hào);
- 如果字符串前面為除空格、+和-以外的特殊符號(hào)或除 a~f(或 A~F)之外的非數(shù)字字符,字符串將不會(huì)被解析,返回結(jié)果為 NaN;
- 在字符串中包含了空格、+、-和小數(shù)點(diǎn)“。”等特殊符號(hào)或非數(shù)字的字符時(shí),解析將在遇到這些字符時(shí)停止,并返回已解析的結(jié)果;
- 如果字符串是空字符串,返回結(jié)果為 NaN。
轉(zhuǎn)換示例:
alert(parseInt("1101",2)); ?//以2為基數(shù)的1101字符串解析后的結(jié)果為:13 alert(parseInt("a37f",16)); //以16為基數(shù)的a37f字符串解析后的結(jié)果為:41855 alert(parseInt("123")); ? ? //以10為基數(shù)的123字符串解析后的結(jié)果為:123 alert(parseInt(" ?123")); ? //字符串前面的空格會(huì)被忽略,結(jié)果為:123 alert(parseInt("12 3")); ? ?//字符串中包含了空格,解析到空格時(shí)停止,結(jié)果為12 alert(parseInt("12.345")); //字符串中包含了小數(shù)點(diǎn),解析到小數(shù)點(diǎn)時(shí)停止,結(jié)果為12 alert(parseInt("xy123")); ?//字符串前面包含了非數(shù)字字符“x”,無法解析,返回結(jié)果為:NaN alert(parseInt("123xy4")); //字符串中包含了非數(shù)字字符“xy”,解析到“x”時(shí)停止,結(jié)果為:123
從上述示例我們可以看到,parseInt() 解析浮點(diǎn)數(shù)時(shí),小數(shù)部分?jǐn)?shù)據(jù)會(huì)被截掉,此時(shí)需要使用下面將介紹的 parseFloat(),而不能使用 parseInt()。
方法4
使用parseFloat()函數(shù)
parseFloat()函數(shù)可以將參數(shù)轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)
使用格式如下:
parseFloat(stringNum)
stringNum 參數(shù)為需要解析為浮點(diǎn)型的字符串。
parseFloat() 的作用是將首位為數(shù)字的字符串轉(zhuǎn)解析成浮點(diǎn)型數(shù)。若 stringNum 字符串不是以合法的字符開頭,則返回 NaN;解析過程中如果遇到不合法的字符,將馬上停止解析,并返回已經(jīng)解析的值。
parseFloat() 在解析字符串為整數(shù)時(shí),遵循以下規(guī)則:
- 解析字符串時(shí),會(huì)忽略字符串前后的空格;如果字符串前面為-,-會(huì)保留在轉(zhuǎn)換結(jié)果中;如果數(shù)字前面為+,轉(zhuǎn)換后將刪掉+號(hào);如果字符串前面為小數(shù)點(diǎn).轉(zhuǎn)換結(jié)果會(huì)在小數(shù)點(diǎn)前面添加 0;
- 如果字符串前面為除空格、+、-和。以外的特殊符號(hào),字符串將不會(huì)被解析,返回結(jié)果為 NaN;
- 在字符串中包含了空格、+和-等特殊符號(hào)或非數(shù)字的字符時(shí),解析將在遇到這些字符時(shí)停止,并返回已解析的結(jié)果;
- 在字符串中包含兩個(gè)以上為小數(shù)點(diǎn)時(shí),解析到第二個(gè)小數(shù)點(diǎn)時(shí)將停止解析,并返回已解析的結(jié)果;
- 如果字符串是空字符串,返回結(jié)果為 NaN。
轉(zhuǎn)換示例:
alert(parseFloat("312.456"));//結(jié)果為:312.456 alert(parseFloat("-3.12"));//字符串前面的“-”將保留,結(jié)果為:-3.12 alert(parseFloat("+3.12"));//字符串前面的“-”將保留,結(jié)果為:3.12 alert(parseFloat(".12"));//在小數(shù)點(diǎn)前面添加0,結(jié)果為:0.12 alert(parseFloat(" ?3.12"));//截掉字符串前面的空格,結(jié)果為:3.12 alert(parseFloat("312.4A56"));//字符串中包含非數(shù)字字符A,解析到A時(shí)停止,結(jié)果為:312.4 alert(parseFloat("31 2.4A56"));//字符串中包含空格,解析到空格時(shí)停止,結(jié)果為:31 alert(parseFloat("31.2.5"));//字符串中包含兩個(gè)小數(shù)點(diǎn),解析到第二個(gè)小數(shù)點(diǎn)時(shí)停止,結(jié)果為:31.2 alert(parseFloat("a312.456"));//字符串前面為非數(shù)字字符a,解析無法進(jìn)行,結(jié)果為:NaN
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JavaScript中將字符串轉(zhuǎn)換為數(shù)字的七種方法總結(jié)
- JavaScript字符串轉(zhuǎn)換數(shù)字的方法
- JavaScript實(shí)現(xiàn)的數(shù)字與字符串轉(zhuǎn)換功能示例
- js 數(shù)字、字符串、布爾值的轉(zhuǎn)換方法(必看)
- JavaScript數(shù)字和字符串轉(zhuǎn)換示例
- js字符串轉(zhuǎn)換成數(shù)字與數(shù)字轉(zhuǎn)換成字符串的實(shí)現(xiàn)方法
- js整數(shù)字符串轉(zhuǎn)換為金額類型數(shù)據(jù)(示例代碼)
- JavaScript中把數(shù)字轉(zhuǎn)換為字符串的程序代碼
- js 字符串轉(zhuǎn)換成數(shù)字的三種方法
- JavaScript中的字符串與數(shù)字轉(zhuǎn)換的示例
相關(guān)文章
JS實(shí)現(xiàn)簡(jiǎn)單的圖書館享元模式實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)簡(jiǎn)單的圖書館享元模式,以一個(gè)圖書館存書借書的例子分析了圖書館享元模式的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-06-06JS+Ajax+Jquery實(shí)現(xiàn)頁面無刷新分頁以及分組 超強(qiáng)的實(shí)現(xiàn)
JS+Ajax+Jquery實(shí)現(xiàn)頁面無刷新分頁以及分組 超強(qiáng)的實(shí)現(xiàn) 加上你的CSS完全可以與EXT媲美哦2009-08-08JavaScript實(shí)現(xiàn)MIPS乘法模擬的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)MIPS乘法模擬的方法,實(shí)例分析了JavaScript實(shí)現(xiàn)MIPS乘法模擬的運(yùn)算技巧,需要的朋友可以參考下2015-04-04JS獲取子、父、兄節(jié)點(diǎn)方法小結(jié)
這篇文章主要介紹了JS獲取子、父、兄節(jié)點(diǎn)方法總結(jié)及JS獲取兄弟節(jié)點(diǎn)的兩種方法,需要的朋友可以參考下2017-08-08Javascript中的方法鏈(Method Chaining)介紹
這篇文章主要介紹了Javascript中的方法鏈(Method Chaining)介紹,本文講解了Javascript Method Chaining、Method Chaining 使用、Method Chaining VS prototype Chaining等內(nèi)容,需要的朋友可以參考下2015-03-03使用bootstrap-paginator.js 分頁來進(jìn)行ajax 異步分頁請(qǐng)求示例
本篇文章主要介紹了使用bootstrap-paginator.js 分頁來進(jìn)行ajax 異步分頁請(qǐng)求示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03js操作時(shí)間(年-月-日 時(shí)-分-秒 星期幾)
js操作時(shí)間(年-月-日 時(shí)-分-秒 星期幾),需要的朋友可以參考下。2010-06-06