私はjavascriptで計算機に取り組んでいます。ここでは、ユーザーがテキストフィールドに値を入力すると、操作が実行されます。ここで、ユーザーが非常に大きな値(たとえば、5345345345353453453453535)を入力すると、5.34534534545353453e+24に変換されます。
parsrInt()を使用して整数に変換しています。そしてそれは私に5を与えます。これは間違っています。誰かがそれを解決する方法を提案できますか?
私はjavascriptで計算機に取り組んでいます。ここでは、ユーザーがテキストフィールドに値を入力すると、操作が実行されます。ここで、ユーザーが非常に大きな値(たとえば、5345345345353453453453535)を入力すると、5.34534534545353453e+24に変換されます。
parsrInt()を使用して整数に変換しています。そしてそれは私に5を与えます。これは間違っています。誰かがそれを解決する方法を提案できますか?
javascriptの整数は、すべての数値と同様に、IEEE754倍精度浮動小数点数として格納されます。
したがって、正確に格納できるのは2 ^ 51(仮数のサイズ)までの整数のみです。
つまり、大きな整数を処理するための別の形式を設計するか、BigInteger.jsなどの既存のライブラリを使用する必要があります(Googleは他のいくつかのライブラリを提案します)。
Mozillaのドキュメントから引用:
文字列引数を解析し、指定された基数または基数の整数を返します。
したがってparseInt()
、値を文字列として取得しています5.345345345353453e+24
次に、整数以外の値を無視し、これを10進数(5.345 ...)として分類してから、これをに評価し5
ます。
@dystroyが指摘しているように、これらの大きな数値で計算を実行する場合は、カスタム形式を使用するか、既存のjavascriptライブラリを使用する必要があります。
parseInt の代わりに parseFloat を試してください。
<script type="text/javascript">
var value = parseFloat(5345345345353453453453535);
alert(value);
</script>