使用浮点数或双精度的浮点计算是在硬件上执行的,这可能会在不同的架构或优化设置上给出不同的结果,如此处所述。
在该线程上简要提到但未完全回答的一件事是 System.Decimal 的情况。有人提到 System.Decimal可能用作一致的浮点类型,它会非常慢,并且 .NET (System.Math) 提供的数学函数没有为 System.Decimal 实现。
我能找到的关于这种类型的唯一其他信息是 Marc Gravell说它是在软件中实现的,这强烈暗示它确实是一致的。
因此,我的问题是:System.Decimal 能否用于在所有硬件平台上获得一致的结果,还是容易出现与 System.Single 和 System.Double 相同的问题?
如果 System.Decimal 是一致的,是否有任何免费库为其实现超越函数(cos、sin、tan、sqrt、log 等)?