jasmine214--love

          只有當(dāng)你的內(nèi)心總是充滿快樂、美好的愿望和寧靜時(shí),你才能擁有強(qiáng)壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          JS--parseInt(,)方法的使用

          Posted on 2010-06-28 14:00 幻海藍(lán)夢(mèng) 閱讀(9626) 評(píng)論(0)  編輯  收藏 所屬分類: JS

          原文:http://www.neoease.com/javascript-get-integer-via-parseint/

          JavaScript 是弱類型語言, 為了保證數(shù)值的有效性, 在處理數(shù)值的時(shí)候, 我們可以對(duì)數(shù)值字符串進(jìn)行強(qiáng)行轉(zhuǎn)換. 如 parseInt 取整和 parseFloat 取浮點(diǎn)數(shù).

          Java 也有 Integer.parseInt() 方法, 但是 JavaScript 的 parseInt 處理方式與 Java 等強(qiáng)整型語言不太一樣, 所以經(jīng)常有人因?yàn)閷?duì)這個(gè)方法的使用不當(dāng)而獲得異常返回.

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

          1
          2
          3
          4
          5
          6
          														public
          														class Test {
          publicstaticvoid main(String args[])throwsException{
          String str ="020";
          System.out.println(Integer.parseInt(str));
          }
          }

          輸出結(jié)果是 20

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

          1
          2
          3
          														var str ="020";
          var num = parseInt(str);
          alert(num);

          輸出結(jié)果是 16

          為什么呢?

          無論是 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 開始的數(shù)被認(rèn)為使用 8 進(jìn)制處理, 0x 的數(shù)被認(rèn)為是用 16 進(jìn)制來處理. 所以上面的 JavaScript 代碼計(jì)算錯(cuò)誤了.

          影響大嗎?

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

          如何修改?

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

          1
          parseInt(num, radix);

          所以我們可以將前面有問題的那段 JavaScript 代碼改寫為下面的代碼.

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

          這樣處理的話, 我們?cè)僦貙懸恍┣懊娴?DEMO, 如下:
          為 parseInt 函數(shù)指定進(jìn)制為 10 的 DEMO

          記住了, 在 JavaScript 上使用 parseInt 方法時(shí)要帶上進(jìn)制參數(shù).

          主站蜘蛛池模板: 乌鲁木齐市| 鄯善县| 多伦县| 芦溪县| 靖宇县| 客服| 荆州市| 平南县| 剑河县| 绥中县| 奉化市| 万年县| 锦屏县| 禄丰县| 贵港市| 炎陵县| 上杭县| 雷波县| 巴青县| 山东省| 利津县| 娱乐| 白银市| 马尔康县| 江安县| 寻乌县| 汉源县| 苍南县| 清涧县| 浦城县| 青河县| 海宁市| 宁都县| 镇坪县| 凤山市| 虎林市| 靖江市| 桑日县| 灵武市| 玉龙| 塔河县|