2

Math.sqrt();310文字未満の任意の数で正常に機能するようです。

ただし、310文字以上の数値は無限大を返します...

自分でテストしたい場合は、jsfiddlehttp : //jsfiddle.net/gqhk9/2にあります。

とにかく、310文字以上のものを含む数値の平方根を取得する必要があります。

どうすればjsでそれを行うことができますか?

4

4 に答える 4

8

これは問題ではありません-呼び出しをMath.sqrt取り除いても、無限大が表示されます。基本的に、Javascriptはそれほど大きな数値には対応できません。つまり、64ビット浮動小数点IEEE754値の範囲を超えています。任意のサイズの整数を処理するためのある種のライブラリを見つける必要があります。Math.sqrt

10 309より小さい数値であっても、最初の15桁以降は情報が失われることに注意してください。これらの数字すべてに関心がある場合は、専門の数学ライブラリを確認する必要があります。

何度か参照されているWebをざっと見てみましBigInt.jsたが、それがどれほど優れているかはわかりません。

于 2012-03-26T06:07:21.797 に答える
2

を見てくださいNumber.MAX_VALUE

  • プロパティのMAX_VALUE値は約1.79E+308です。
  • より大きい値MAX_VALUEは「無限大」として表されます。
于 2012-03-26T06:08:32.577 に答える
1

Javascriptの数はそれほど大きくすることはできません。

入力した場合

javascript:123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890

アドレスバーには、も表示されますInfinity

bignumライブラリを使用する必要があります。

于 2012-03-26T06:07:33.857 に答える
1

Infinity開始する番号、Math.sqrt(Infinity)12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890Infinity

必要なのは、それをシミュレートするための大きな整数ライブラリです。たとえば、http://www.leemon.com/crypto/BigInt.html ; 次に、大きな整数を0.5の累乗にして、平方根を計算できます。

于 2012-03-26T06:08:51.663 に答える