华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓(xùn)課程 | 模擬考場 | 考試論壇  
  當(dāng)前位置:設(shè)計制作 > JavaScript > 文章內(nèi)容
  

JavaScript數(shù)據(jù)類型:轉(zhuǎn)換成數(shù)字

 [ 2016年6月17日 ] 【

轉(zhuǎn)換成數(shù)字

ECMAScript 提供了兩種把非數(shù)字的原始值轉(zhuǎn)換成數(shù)字的方法,即 parseInt() 和 parseFloat()。

正如您可能想到的,前者把值轉(zhuǎn)換成整數(shù),后者把值轉(zhuǎn)換成浮點(diǎn)數(shù)。只有對 String 類型調(diào)用這些方法,它們才能正確運(yùn)行;對其他類型返回的都是 NaN。

parseInt()

在判斷字符串是否是數(shù)字值前,parseInt() 和 parseFloat() 都會仔細(xì)分析該字符串。

parseInt() 方法首先查看位置 0 處的字符,判斷它是否是個有效數(shù)字;如果不是,該方法將返回 NaN,不再繼續(xù)執(zhí)行其他操作。但如果該字符是有效數(shù)字,該方法將查看位置 1 處的字符,進(jìn)行同樣的測試。這一過程將持續(xù)到發(fā)現(xiàn)非有效數(shù)字的字符為止,此時 parseInt() 將把該字符之前的字符串轉(zhuǎn)換成數(shù)字。

例如,如果要把字符串 "12345red" 轉(zhuǎn)換成整數(shù),那么 parseInt() 將返回 12345,因為當(dāng)它檢查到字符 r 時,就會停止檢測過程。

字符串中包含的數(shù)字字面量會被正確轉(zhuǎn)換為數(shù)字,比如 "0xA" 會被正確轉(zhuǎn)換為數(shù)字 10。不過,字符串 "22.5" 將被轉(zhuǎn)換成 22,因為對于整數(shù)來說,小數(shù)點(diǎn)是無效字符。

一些示例如下:

var iNum1 = parseInt("12345red");	//返回 12345
var iNum1 = parseInt("0xA");	//返回 10
var iNum1 = parseInt("56.9");	//返回 56
var iNum1 = parseInt("red");	//返回 NaN

parseInt() 方法還有基模式,可以把二進(jìn)制、八進(jìn)制、十六進(jìn)制或其他任何進(jìn)制的字符串轉(zhuǎn)換成整數(shù);怯 parseInt() 方法的第二個參數(shù)指定的,所以要解析十六進(jìn)制的值,需如下調(diào)用 parseInt() 方法:

var iNum1 = parseInt("AF", 16);	//返回 175

當(dāng)然,對二進(jìn)制、八進(jìn)制甚至十進(jìn)制(默認(rèn)模式),都可以這樣調(diào)用 parseInt() 方法:

var iNum1 = parseInt("10", 2);	//返回 2
var iNum2 = parseInt("10", 8);	//返回 8
var iNum3 = parseInt("10", 10);	//返回 10

如果十進(jìn)制數(shù)包含前導(dǎo) 0,那么最好采用基數(shù) 10,這樣才不會意外地得到八進(jìn)制的值。例如:

var iNum1 = parseInt("010");	//返回 8
var iNum2 = parseInt("010", 8);	//返回 8
var iNum3 = parseInt("010", 10);	//返回 10

在這段代碼中,兩行代碼都把字符 "010" 解析成一個數(shù)字。第一行代碼把這個字符串看作八進(jìn)制的值,解析它的方式與第二行代碼(聲明基數(shù)為 8)相同。最后一行代碼聲明基數(shù)為 10,所以 iNum3 最后等于 10。

參閱

請參閱 JavaScript 參考手冊提供的有關(guān) parseInt() 方法的詳細(xì)信息:parseInt()。

parseFloat()

parseFloat() 方法與 parseInt() 方法的處理方式相似,從位置 0 開始查看每個字符,直到找到第一個非有效的字符為止,然后把該字符之前的字符串轉(zhuǎn)換成整數(shù)。

不過,對于這個方法來說,第一個出現(xiàn)的小數(shù)點(diǎn)是有效字符。如果有兩個小數(shù)點(diǎn),第二個小數(shù)點(diǎn)將被看作無效的。parseFloat() 會把這個小數(shù)點(diǎn)之前的字符轉(zhuǎn)換成數(shù)字。這意味著字符串 "11.22.33" 將被解析成 11.22。

使用 parseFloat() 方法的另一不同之處在于,字符串必須以十進(jìn)制形式表示浮點(diǎn)數(shù),而不是用八進(jìn)制或十六進(jìn)制。該方法會忽略前導(dǎo) 0,所以八進(jìn)制數(shù) 0102 將被解析為 102。對于十六進(jìn)制數(shù) 0xA,該方法將返回 NaN,因為在浮點(diǎn)數(shù)中,x 不是有效字符。(注釋:經(jīng)測試,具體的瀏覽器實現(xiàn)會返回 0,而不是 NaN。)

此外,parseFloat() 方法也沒有基模式。

下面是使用 parseFloat() 方法的一些示例:

var fNum1 = parseFloat("12345red");	//返回 12345
var fNum2 = parseFloat("0xA");	//返回 NaN
var fNum3 = parseFloat("11.2");	//返回 11.2
var fNum4 = parseFloat("11.22.33");	//返回 11.22
var fNum5 = parseFloat("0102");	//返回 102
var fNum1 = parseFloat("red");	//返回 NaN
本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復(fù)制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved
沂水县| 金湖县| 聂荣县| 蒲城县| 和静县| 北票市| 郁南县| 黄冈市| 三门县| 廊坊市| 和田县| 常德市| 娄烦县| 康定县| 温州市| 裕民县| 常熟市| 石家庄市| 黎平县| 盖州市| 义马市| 玉田县| 沁水县| 东宁县| 启东市| 多伦县| 翁牛特旗| 清河县| 灵丘县| 东港市| 高雄县| 彭水| 宜昌市| 涡阳县| 汉源县| 太和县| 宿迁市| 视频| 美姑县| 贡山| 息烽县|