Math.sqrt();
似乎适用于任何长度少于310个字符的数字。
但是,任何310或以上的字符都将返回无穷大......
如果您想自己测试一下,请点击jsfiddle http://jsfiddle.net/gqhk9/2
无论如何,我需要获得数字的平方根,包括310个字符和更长的数字。
我怎样才能在js中做到这一点?
答案 0 :(得分:8)
这不是Math.sqrt
的问题 - 摆脱Math.sqrt
电话,你仍然看到无限。基本上,Javascript无法处理大数字 - 它超出了64位浮点IEEE 754值的范围。您需要找到某种类型的库来处理任意大小的整数。
请注意,即使对于小于10 309 的数字,您仍然会在前15位数后丢失信息。如果您关心所有这些数字,那么您应该再次关注专业数学库。
快速浏览网页{@ 3}}引用了几次,但我不知道它有多好。
答案 1 :(得分:2)
MAX_VALUE
属性的值约为1.79E + 308。- 大于
MAX_VALUE
的值表示为“无限”。
答案 2 :(得分:1)
Javascript数字不能那么大。
如果您输入
javascript:123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
在地址栏中,您还会获得Infinity
。
您需要使用bignum库。
答案 3 :(得分:1)
这你开始使用,1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890数,为Infinity
,和Math.sqrt(Infinity)
是Infinity
。
您需要的是一个用于模拟它的大整数库,例如http://www.leemon.com/crypto/BigInt.html;那么你可以用你的大整数到0.5的幂来计算平方根。