2010-12-02 45 views
3

我是一個jscript新手,我有一個問題。JScript中的精度錯誤?

我正在寫一個腳本來驗證比利時的IBAN銀行帳號。我需要用搜索字符串中的位置來替換一些字母,然後將該字符串轉換爲數字以進行模97測試。

第一部分進行得很順利,但之後從字符串轉換爲數字,10被添加到我的號碼。我不知道我做錯了什麼。

function checkIBAN() 
{ 
    var iban = crmForm.all.fp_iban.DataValue; 

    if (iban != null) 
    { 
    iban = iban.substring(4) + iban.substring(0, 4); 

    iban = iban.toUpperCase(); 
    var searchString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
    var pos; 
    var tmp = ''; 

    for (x = 0; x < iban.length; x++) { 
     pos = searchString.search(RegExp(iban.charAt(x),'i')); 
     if (pos == -1) 
     return false; 
     else 
     tmp += pos.toString(); 
    } 

    alert(tmp); // Here my value is 735320036532111490 

    var nr =parseInt(tmp); 

    alert(nr); // Now my value seems to be 735320036532111500 
    alert(nr % 97); 
    if (nr % 97 != 1) 
    { 
     alert('IBAN number is not correct !'); 
    } 
    } 
} 

回答

2

是的,735320036532111490是存儲在int中的值太大了。它總是四捨五入的:

alert(735320036532111490/10); 
// alerts 73532003653211150 

Here's a solution that might work for you

+0

OK,THI ssolved我的問題, – 2010-12-02 09:01:41

+0

感謝您的鏈接!我創建了一個可能很有用的Javascript端口:http://jsfiddle.net/nDSmZ/ – Blaise 2011-10-31 16:34:39