0

私はjavascriptで計算機に取り組んでいます。ここでは、ユーザーがテキストフィールドに値を入力すると、操作が実行されます。ここで、ユーザーが非常に大きな値(たとえば、5345345345353453453453535)を入力すると、5.34534534545353453e+24に変換されます。

parsrInt()を使用して整数に変換しています。そしてそれは私に5を与えます。これは間違っています。誰かがそれを解決する方法を提案できますか?

4

3 に答える 3

3

javascriptの整数は、すべての数値と同様に、IEEE754倍精度浮動小数点数として格納されます。

したがって、正確に格納できるのは2 ^ 51(仮数のサイズ)までの整数のみです。

つまり、大きな整数を処理するための別の形式を設計するか、BigInteger.jsなどの既存のライブラリを使用する必要があります(Googleは他のいくつかのライブラリを提案します)。

于 2013-02-21T15:19:31.297 に答える
2

Mozillaのドキュメントから引用:

文字列引数を解析し、指定された基数または基数の整数を返します。

したがってparseInt()、値を文字列として取得しています5.345345345353453e+24

次に、整数以外の値を無視し、これを10進数(5.345 ...)として分類してから、これをに評価し5ます。


@dystroyが指摘しているように、これらの大きな数値で計算を実行する場合は、カスタム形式を使用するか、既存のjavascriptライブラリを使用する必要があります。

于 2013-02-21T15:19:49.737 に答える
0

parseInt の代わりに parseFloat を試してください。

<script type="text/javascript">
    var value = parseFloat(5345345345353453453453535);
    alert(value);
</script>
于 2013-02-21T15:17:53.180 に答える