复杂。缺乏精确度

时间:2016-09-20 04:49:47

标签: c# precision complex-numbers

使用Complex.Pow()计算i ^ 2125给出复杂的结果

(1.42553220285208E-13, 1)

我如何制定对Complex.Pow()的调用并不重要 - 以下每个都给出了相同的结果:

Complex.Pow(Complex.ImaginaryOne, 2125.0)
Complex.Pow(Complex.ImaginaryOne, new Complex(2125.0, 0))
Complex.Pow(new Complex(0.0, 1.0), new Complex(2125.0, 0))

据我所知,双精度浮点数不具有无限精度,但这里基数的实部为0.0 - 为什么(复合)缺少0的精度? (复合因为随着指数的增加,结果的实部缺乏精确度)。

而且......因为我知道基数的实部是0.0,我只能将结果的真实部分设为0.0 - 但这是处理通用结果的最佳方法吗?

编辑 - 阅读下面的一些评论后,我做了以下几点:

Complex.Pow(Complex.ImaginaryOne, 999999999)

并得到以下结果:

(-1.79531386009907E-07, -0.999999999999984)

所以真实部分的精度损失超过3位数。为什么会这样?

0 个答案:

没有答案