我惊讶地发现System.Numerics.Complex
.NET 中的数据类型并不能产生数学上准确的结果。
Complex.Sqrt(-1) != Complex.ImaginaryOne
我得到的不是 (0, 1),而是 (6.12303176911189E-17, 1),这看起来很像舍入错误。
现在我意识到浮点运算有时会导致这样的结果,但通常使用整数会避免舍入错误。
为什么这个看似基本的操作会产生明显错误的结果?
我惊讶地发现System.Numerics.Complex
.NET 中的数据类型并不能产生数学上准确的结果。
Complex.Sqrt(-1) != Complex.ImaginaryOne
我得到的不是 (0, 1),而是 (6.12303176911189E-17, 1),这看起来很像舍入错误。
现在我意识到浮点运算有时会导致这样的结果,但通常使用整数会避免舍入错误。
为什么这个看似基本的操作会产生明显错误的结果?