溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaScript中怎么使用parseInt實(shí)現(xiàn)取整

發(fā)布時(shí)間:2021-07-06 16:49:24 來(lái)源:億速云 閱讀:450 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)JavaScript中怎么使用parseInt實(shí)現(xiàn)取整,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

JavaScript 是弱類型語(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)為整型。

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)為整型。

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à)錢,一旦價(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 被忽略掉)。

如何修改?

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

parseInt(num,radix);

所以我們可以將前面有問(wèn)題的那段 JavaScript 代碼改寫為下面的代碼。

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

以上就是JavaScript中怎么使用parseInt實(shí)現(xiàn)取整,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI