2010-12-02 10 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は、そのリンクの –

+0

おかげで私の問題をssolved!私は役に立つかもしれないJavascriptポートを作成しました:http://jsfiddle.net/nDSmZ/ – Blaise

0

parseIntを使用する場合は、常に基数を指定してください。リファレンス情報について

var nr =parseInt(tmp, 10); 

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt

+1

先端のためのThanx –

+1

これは手元の問題を解決しないので、これはコメントでなければなりません –

+0

@David Hedlund +1あなたのコメント- あなたが正しい。 <お悔やみをぶち壊す> –

関連する問題