Math.sqrt();
似乎适用于长度小于 310 个字符的任何数字。
但是,任何 310 个字符或以上的数字都将返回无穷大......
如果你想自己测试一下,这里是 jsfiddle http://jsfiddle.net/gqhk9/2
无论如何,我需要得到数字的平方根,包括一些 310 个字符或更长的数字。
我怎么能在js中做到这一点?
Math.sqrt();
似乎适用于长度小于 310 个字符的任何数字。
但是,任何 310 个字符或以上的数字都将返回无穷大......
如果你想自己测试一下,这里是 jsfiddle http://jsfiddle.net/gqhk9/2
无论如何,我需要得到数字的平方根,包括一些 310 个字符或更长的数字。
我怎么能在js中做到这一点?
这不是问题Math.sqrt
- 摆脱Math.sqrt
呼叫,您仍然会看到无穷大。基本上,Javascript 无法处理这么大的数字——它超出了 64 位浮点 IEEE 754 值的范围。您需要找到某种库来处理任意大小的整数。
请注意,即使对于小于 10 309的数字,您仍然会在前 15 位数字之后丢失信息。如果您关心所有这些数字,那么您应该再次查看专业数学库。
快速浏览网络发现BigInt.js
引用了几次,但我不知道它有多好。
- 该
MAX_VALUE
物业的价值约为 1.79E+308。- 大于
MAX_VALUE
的值表示为 "Infinity"。
Javascript 数字不可能那么大。
如果你输入
javascript:123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
在您的地址栏中,您还将获得Infinity
.
您需要使用 bignum 库。
The number that you are starting with, 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890, is Infinity
, and Math.sqrt(Infinity)
is Infinity
.
你需要的是一个大整数库来模拟它,例如http://www.leemon.com/crypto/BigInt.html;然后你可以将你的大整数乘以 0.5 的幂来计算平方根。