重複の可能性:
なぜparseInt()がこのように機能するのですか?
parseInt()が予期せず0を返すという問題があります。サンプルを次に示します。
parseInt('-06') = -6
parseInt('-07') = -7
parseInt('-08') = 0
結果が0になるのはなぜですか?降り続けても同じです(-09、-10など)。文字列の形式は私のフレームワークから来ているので、それを処理する必要があります。ありがとう!
重複の可能性:
なぜparseInt()がこのように機能するのですか?
parseInt()が予期せず0を返すという問題があります。サンプルを次に示します。
parseInt('-06') = -6
parseInt('-07') = -7
parseInt('-08') = 0
結果が0になるのはなぜですか?降り続けても同じです(-09、-10など)。文字列の形式は私のフレームワークから来ているので、それを処理する必要があります。ありがとう!
使用する場合は、基数パラメータを渡す必要がありますparseInt
parseInt('-08', 10);
そうしない場合、および解析している文字列の先行ゼロが含まれている場合parseInt
、ブラウザによって異なる結果が生成されます。最も一般的な問題は、文字列が8進数として扱われることです。これは、表示されている数値です。
これが「-06」と「-07」で機能した理由です。これらは両方とも有効な基数8の数値です。'-08'は有効な基数8の数値ではないため、解析は失敗し、0が返されました。
MDNから
基数
上記の文字列の基数を表す整数。このパラメーターはオプションですが、読者の混乱を排除し、予測可能な動作を保証するために、常に指定してください。基数が指定されていない場合、実装が異なれば結果も異なります。
+
また、単項演算子を使用して、これらの文字列を数値に変換できることにも注意してください。
var str = '-08';
var num = +str;
console.log(num);
//logs -8
これを試すこともできます:
'-06' * 1 = -6
'-07' * 1 = -7
'-08' * 1 = -8