Math.sqrt();
310文字未満の任意の数で正常に機能するようです。
ただし、310文字以上の数値は無限大を返します...
自分でテストしたい場合は、jsfiddlehttp : //jsfiddle.net/gqhk9/2にあります。
とにかく、310文字以上のものを含む数値の平方根を取得する必要があります。
どうすればjsでそれを行うことができますか?
Math.sqrt();
310文字未満の任意の数で正常に機能するようです。
ただし、310文字以上の数値は無限大を返します...
自分でテストしたい場合は、jsfiddlehttp : //jsfiddle.net/gqhk9/2にあります。
とにかく、310文字以上のものを含む数値の平方根を取得する必要があります。
どうすればjsでそれを行うことができますか?
これは問題ではありません-呼び出しをMath.sqrt
取り除いても、無限大が表示されます。基本的に、Javascriptはそれほど大きな数値には対応できません。つまり、64ビット浮動小数点IEEE754値の範囲を超えています。任意のサイズの整数を処理するためのある種のライブラリを見つける必要があります。Math.sqrt
10 309より小さい数値であっても、最初の15桁以降は情報が失われることに注意してください。これらの数字すべてに関心がある場合は、専門の数学ライブラリを確認する必要があります。
何度か参照されているWebをざっと見てみましBigInt.js
たが、それがどれほど優れているかはわかりません。
を見てくださいNumber.MAX_VALUE
。
- プロパティの
MAX_VALUE
値は約1.79E+308です。- より大きい値
MAX_VALUE
は「無限大」として表されます。
Javascriptの数はそれほど大きくすることはできません。
入力した場合
javascript:123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
アドレスバーには、も表示されますInfinity
。
bignumライブラリを使用する必要があります。
Infinity
開始する番号、Math.sqrt(Infinity)
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890Infinity
必要なのは、それをシミュレートするための大きな整数ライブラリです。たとえば、http://www.leemon.com/crypto/BigInt.html ; 次に、大きな整数を0.5の累乗にして、平方根を計算できます。