JavaScript的parseInt 取整使用

來源:互聯網
上載者:User

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

下面是一段 Java 代碼, 用於將字串 020 轉為整型.
複製代碼 代碼如下:
public class Test {
public static void main(String args[]) throws Exception {
String str = "020";
System.out.println(Integer.parseInt(str));
}
}

輸出結果是 20

下面是一段 JavaScript 代碼, 同樣是將字串 020 轉為整型.
複製代碼 代碼如下:
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

如何修改?
前面說過, 有兩個參數, 第二個參數可以指定計算使用的進位.

複製代碼 代碼如下:
parseInt(num, radix);

所以我們可以將前面有問題的那段 JavaScript 代碼改寫為下面的代碼.
複製代碼 代碼如下:
var str = "020";
var num = parseInt(str, 10);
alert(num);

這樣處理的話, 我們再重寫一些前面的 DEMO, 如下:
為 parseInt 函數指定進位為 10 的 DEMO
記住了, 在 JavaScript 上使用 parseInt 方法時要帶上進位參數.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.