Math.Sqrt()在使用BigInteger时?

时间:2014-12-28 16:03:30

标签: c# math math.sqrt

我需要进行Math.Sqrt计算,但它必须支持非常大的数字,因此我尝试使用BigInteger,但Math.Sqrt不支持它们。

还有其他选择吗?我该怎么做这个计算,结果是双倍的?

示例:

sqrt 5 = 2,2360679774997896964091736687313 
sqrt 4789798765456456456 = xxxxx,xxxxxxxxxxx norm.

1 个答案:

答案 0 :(得分:-3)

最简单的方法可能是从双精度初始猜测开始运行Newton's method for square roots

为了加快速度,请注意Newton的方法在每次迭代时都会使其精度加倍。通过跟踪int32“指数”和BigInteger“尾数”,你可以使你的精度加倍,每个步骤将“尾数”的精度提高两倍,直到达到足够的精度到了。