dav*_*orb 0 ruby floating-point bignum sqrt
我正在尝试计算Ruby中一个非常大的数字的平方根.我遇到的问题是Math.sqrt函数看起来像这样
sqrt(numeric) ? float
如果我给它一个非常大的数字,它会给我FloatDomainError:Infinity.
sqrt()返回BigNum 的最佳方法是什么?是否可能有一个宝石或我是否必须编写自己的函数来计算平方根?
在这种情况下,最简单的方法是做什么?泰勒系列?数字的平方根将始终为整数.
有一种简单的方法可以计算整数的平方根,从而产生一个整数:
不过,这种方法对于大数字来说效率可能不高,所以试试看.
编辑:
这是Ruby实现:
def mysqrt(x)
return 0 if x==0
m=x
p=x
loop do
r=(m+p/m)/2
return m if m<=r
m=r
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2068 次 |
| 最近记录: |