jasmine214--love

          只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

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

          Posted on 2010-06-28 14:00 幻海藍夢 閱讀(9625) 評論(0)  編輯  收藏 所屬分類: JS

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

          JavaScript 是弱類型語言, 為了保證數值的有效性, 在處理數值的時候, 我們可以對數值字符串進行強行轉換. 如 parseInt 取整和 parseFloat 取浮點數.

          Java 也有 Integer.parseInt() 方法, 但是 JavaScript 的 parseInt 處理方式與 Java 等強整型語言不太一樣, 所以經常有人因為對這個方法的使用不當而獲得異常返回.

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

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

          輸出結果是 20

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

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

          輸出結果是 16

          為什么呢?

          無論是 Java 還是 JavaScript, parseInt 方法都有兩個參數, 第一個參數就是要轉換的對象, 第二個參數是進制基數, 可以是 2, 8, 10, 16, 默認以 10 進制處理. 但在 JavaScript 中, 0 開始的數被認為使用 8 進制處理, 0x 的數被認為是用 16 進制來處理. 所以上面的 JavaScript 代碼計算錯誤了.

          影響大嗎?

          大! 很大! 因為這個經常用于計算價錢, 一旦價格錯誤, 對用戶來說, 這是誤導, 而一個好的網站不應該出現這種誤導用戶的. 下面的 DEMO 中, 沒有指定進制. 大家可以在數量框中輸入一個以 0 開頭的數字, 在點擊計算按鈕, 算出來的數值將比預想中的小一些, 或者小很多 (如: 8 進制中沒有 019 這樣的數值, 所以數值變成了 1, 9 被忽略掉).
          沒 有為 parseInt 函數指定進制的 DEMO

          如何修改?

          前面說過, 有兩個參數, 第二個參數可以指定計算使用的進制.

          1
          parseInt(num, radix);

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

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

          這樣處理的話, 我們再重寫一些前面的 DEMO, 如下:
          為 parseInt 函數指定進制為 10 的 DEMO

          記住了, 在 JavaScript 上使用 parseInt 方法時要帶上進制參數.

          主站蜘蛛池模板: 黑河市| 子长县| 青州市| 蛟河市| 尚义县| 巴楚县| 汉川市| 额敏县| 波密县| 榆林市| 荃湾区| 南靖县| 忻城县| 蓝山县| 六盘水市| 香河县| 方正县| 化德县| 嘉义县| 大兴区| 新疆| 无极县| 凤阳县| 左贡县| 建宁县| 措美县| 龙南县| 霍州市| 潢川县| 台北市| 武汉市| 泽库县| 玉林市| 华亭县| 大名县| 涞源县| 南皮县| 乳源| 石林| 合阳县| 涪陵区|