我想在Ruby中計算一個非常大的數字的平方根。我的問題是,Math.sqrt功能看起來像這樣我如何獲得Math.Sqrt返回一個Bignum而不是一個浮動?
sqrt(numeric) → float
如果我給它一個非常大的數字,它會給我FloatDomainError:無限。
sqrt()
返回BigNum的最佳方式是什麼?有沒有可能是一個寶石,或者我將不得不寫我自己的函數來計算平方根?
在這種情況下,最簡單的方法是什麼?泰勒系列?數字的平方根將是總是是整數。
我想在Ruby中計算一個非常大的數字的平方根。我的問題是,Math.sqrt功能看起來像這樣我如何獲得Math.Sqrt返回一個Bignum而不是一個浮動?
sqrt(numeric) → float
如果我給它一個非常大的數字,它會給我FloatDomainError:無限。
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
哇,大於'浮法:: MAX#=> 1.79769313486232e + 308'?你如何得到那麼大的東西?有什麼中間點可以讓你紮根? –