欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript的parseInt 取整使用

 更新時(shí)間:2011年05月09日 23:21:47   作者:  
JavaScript 是弱類(lèi)型語(yǔ)言, 為了保證數(shù)值的有效性, 在處理數(shù)值的時(shí)候, 我們可以對(duì)數(shù)值字符串進(jìn)行強(qiáng)行轉(zhuǎn)換. 如 parseInt 取整和 parseFloat 取浮點(diǎn)數(shù)
Java 也有 Integer.parseInt() 方法, 但是 JavaScript 的 parseInt 處理方式與 Java 等強(qiáng)整型語(yǔ)言不太一樣, 所以經(jīng)常有人因?yàn)閷?duì)這個(gè)方法的使用不當(dāng)而獲得異常返回.

下面是一段 Java 代碼, 用于將字符串 020 轉(zhuǎn)為整型.
復(fù)制代碼 代碼如下:

public class Test {
public static void main(String args[]) throws Exception {
String str = "020";
System.out.println(Integer.parseInt(str));
}
}

輸出結(jié)果是 20

下面是一段 JavaScript 代碼, 同樣是將字符串 020 轉(zhuǎn)為整型.
復(fù)制代碼 代碼如下:

var str = "020";
var num = parseInt(str);
alert(num);

輸出結(jié)果是 16

為什么呢?
無(wú)論是 Java 還是 JavaScript, parseInt 方法都有兩個(gè)參數(shù), 第一個(gè)參數(shù)就是要轉(zhuǎn)換的對(duì)象, 第二個(gè)參數(shù)是進(jìn)制基數(shù), 可以是 2, 8, 10, 16, 默認(rèn)以 10 進(jìn)制處理. 但在 JavaScript 中, 0 開(kāi)始的數(shù)被認(rèn)為使用 8 進(jìn)制處理, 0x 的數(shù)被認(rèn)為是用 16 進(jìn)制來(lái)處理. 所以上面的 JavaScript 代碼計(jì)算錯(cuò)誤了.

影響大嗎?
大! 很大! 因?yàn)檫@個(gè)經(jīng)常用于計(jì)算價(jià)錢(qián), 一旦價(jià)格錯(cuò)誤, 對(duì)用戶來(lái)說(shuō), 這是誤導(dǎo), 而一個(gè)好的網(wǎng)站不應(yīng)該出現(xiàn)這種誤導(dǎo)用戶的. 下面的 DEMO 中, 沒(méi)有指定進(jìn)制. 大家可以在數(shù)量框中輸入一個(gè)以 0 開(kāi)頭的數(shù)字, 在點(diǎn)擊計(jì)算按鈕, 算出來(lái)的數(shù)值將比預(yù)想中的小一些, 或者小很多 (如: 8 進(jìn)制中沒(méi)有 019 這樣的數(shù)值, 所以數(shù)值變成了 1, 9 被忽略掉).
沒(méi)有為 parseInt 函數(shù)指定進(jìn)制的 DEMO

如何修改?
前面說(shuō)過(guò), 有兩個(gè)參數(shù), 第二個(gè)參數(shù)可以指定計(jì)算使用的進(jìn)制.

復(fù)制代碼 代碼如下:

parseInt(num, radix);

所以我們可以將前面有問(wèn)題的那段 JavaScript 代碼改寫(xiě)為下面的代碼.
復(fù)制代碼 代碼如下:

var str = "020";
var num = parseInt(str, 10);
alert(num);

這樣處理的話, 我們?cè)僦貙?xiě)一些前面的 DEMO, 如下:
為 parseInt 函數(shù)指定進(jìn)制為 10 的 DEMO
記住了, 在 JavaScript 上使用 parseInt 方法時(shí)要帶上進(jìn)制參數(shù).

相關(guān)文章

最新評(píng)論