JavaScript的parseInt 取整使用
下面是一段 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à)錢(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)制.
parseInt(num, radix);
所以我們可以將前面有問(wèn)題的那段 JavaScript 代碼改寫(xiě)為下面的代碼.
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ù).
- js parseInt的陷阱分析小結(jié)
- js中parseInt函數(shù)淺談
- 關(guān)于javascript中的parseInt使用技巧
- js parsefloat parseint 轉(zhuǎn)換函數(shù)
- javascript中的parseInt和parseFloat區(qū)別
- javascript中parseInt()函數(shù)的定義和用法分析
- javascript parseInt() 函數(shù)的進(jìn)制轉(zhuǎn)換注意細(xì)節(jié)
- JS實(shí)現(xiàn)手寫(xiě)parseInt的方法示例
- javascript parseInt 大改造
- Js中parseInt的使用及注意事項(xiàng)
相關(guān)文章
JavaScript函數(shù)節(jié)流和函數(shù)防抖之間的區(qū)別
本文主要介紹了JavaScript函數(shù)節(jié)流和函數(shù)防抖之間的區(qū)別。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02JS實(shí)現(xiàn)點(diǎn)擊li標(biāo)簽彈出對(duì)應(yīng)的索引功能【案例】
這篇文章主要介紹了JS實(shí)現(xiàn)點(diǎn)擊li標(biāo)簽彈出對(duì)應(yīng)的索引功能,結(jié)合具體實(shí)例形式分析了javascript事件響應(yīng)、元素遍歷等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02js以分隔符分隔數(shù)組中的元素并轉(zhuǎn)換為字符串的方法
下面小編就為大家?guī)?lái)一篇js以分隔符分隔數(shù)組中的元素并轉(zhuǎn)換為字符串的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11實(shí)例解析js中try、catch、finally的執(zhí)行規(guī)則
本文主要通過(guò)實(shí)例解析來(lái)更好的了解js中try、catch、finally的執(zhí)行規(guī)則,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02JavaScript實(shí)現(xiàn)讀取上傳視頻文件的時(shí)長(zhǎng)和第一幀畫(huà)面過(guò)程講解
當(dāng)我們做一個(gè)后臺(tái)系統(tǒng)的音視頻管理模塊時(shí),通常要限制文件的大小和類(lèi)型,這篇文章主要介紹了JavaScript實(shí)現(xiàn)讀取上傳視頻文件的時(shí)長(zhǎng)和第一幀畫(huà)面過(guò)程,需要詳細(xì)了解實(shí)現(xiàn)方法可以參考下文2023-05-05javascript驗(yàn)證香港身份證的格式或真實(shí)性
本文分享了利用javascript驗(yàn)證香港身份證的格式或真實(shí)性的代碼,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02微信小程序修改swiper默認(rèn)指示器樣式的實(shí)例代碼
這篇文章主要介紹了微信小程序修改swiper默認(rèn)指示器樣式的實(shí)例代碼,代碼塊是從微信開(kāi)發(fā)文檔中心復(fù)制的代碼塊,在此基礎(chǔ)上修改官方swiper樣式,需要的朋友可以參考下2018-07-07頁(yè)面加載完后自動(dòng)執(zhí)行一個(gè)方法的js代碼
這篇文章主要介紹了加載完成一個(gè)頁(yè)面后自動(dòng)執(zhí)行一個(gè)方法,很簡(jiǎn)單很實(shí)用,需要的朋友可以參考下2014-09-09