2010-12-02 40 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