JScript中的精度误差?

3

我是一个 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 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    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个回答

2

谢谢提供链接!我创建了一个JavaScript版本,可能会有用:http://jsfiddle.net/nDSmZ/ - Blaise

0

1
这应该是一条注释,因为它并没有解决问题。 - David Hedlund
@David Hedlund,我赞同你的评论 - 你是对的。 <低头羞愧> - Bernhard Hofmann
作为注释,这是一个很好的建议。省略基数是一个非常常见的错误,它可能会导致一些非常意外的行为。 - David Hedlund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接