4

整数の範囲制限を超える可能性のある 2 つの整数を比較する必要があります。これをjavascriptで取得するにはどうすればよいですか。最初に、値を文字列として取得し、parseInt を実行してそれらを比較します。

var test = document.getElementById("test").value;
var actual = document.getElementById("actual").value;
if ( parseInt(test) == parseInt(actual)){
  return false;  
}

long を使用するオプションはありますか? また、parseInt と valueOf のどちらを使用するのが最適ですか??

任意の提案をいただければ幸いです。

ありがとう

4

3 に答える 3

4

基数を割り当てたほうがよいでしょう。元。parseInt('08')くれ0ません8

if (parseInt(test, 10) === parseInt(actual, 10)) {
于 2012-07-03T07:11:26.173 に答える
4

それらを文字列のままにして比較します(先頭と末尾のスペースの文字列、および数値の意味を変更せずに削除しても安全だと思われるその他の文字をクリーンアップした後)。

Javascript の数値は、最大 53 ビットの精度になります。あなたの番号が範囲内にあるかどうかを確認してください。

入力は整数であると予想されるため、厳密に入力が正規表現と一致することのみを許可できます。

/\s*0*([1-9]\d*|0)\s*/

(任意の先行スペース、任意の数の先行 0、一連の意味のある数字または単一の 0、任意の後続スペース)

番号は、最初のキャプチャ グループから抽出できます。

于 2012-07-03T07:11:41.443 に答える
1

整数であり、比較の一部にしたくない非数字文字をすでに検証していると仮定すると、先頭/末尾のものをクリーンアップしてから、長さを比較するだけで、長さが等しい場合は、単純なASCII比較であり、これは任意の長さの数値に対して機能します。

function mTrim(val) {
    var temp = val.replace(/^[\s0]+/, "").replace(/\s+$/, "");
    if (!temp) {
        temp = "0";
    }
    return(temp);
}

var test = mTrim(document.getElementById("test").value);
var actual = mTrim(document.getElementById("actual").value);

if (test.length > actual.length) {
    // test is greater than actual
} else if (test.length < actual.length) {
    // test is less than actual
} else {
    // do a plain ascii comparison of test and actual
    if (test == actual) {
        // values are the same
    } else if (test > ascii) {
        // test is greater than actual
    } else {
        // test is less than actual
    }
}
于 2012-07-03T07:26:35.660 に答える