使用float或double进行浮点计算时,会在硬件上执行,不同的架构或优化设置可能会产生不同的结果,详见此处讨论。
那个主题中简要提到了一个问题,但没有得到充分回答,即System.Decimal的情况。有人指出System.Decimal可以作为一种连续的浮点类型,但速度非常慢,并且.NET提供的数学函数(System.Math)没有为System.Decimal实现。
我能找到的关于这种类型的唯一其他信息是Marc Gravell 说它是由软件实现的,这强烈暗示它确实是一致的。
因此,我的问题是:是否可以使用System.Decimal在所有硬件平台上获得一致的结果,或者它容易受到与System.Single和System.Double相同的问题?
如果System.Decimal是一致的,则是否有任何免费库为其实现超越函数(cos、sin、tan、sqrt、log等)?
那个主题中简要提到了一个问题,但没有得到充分回答,即System.Decimal的情况。有人指出System.Decimal可以作为一种连续的浮点类型,但速度非常慢,并且.NET提供的数学函数(System.Math)没有为System.Decimal实现。
我能找到的关于这种类型的唯一其他信息是Marc Gravell 说它是由软件实现的,这强烈暗示它确实是一致的。
因此,我的问题是:是否可以使用System.Decimal在所有硬件平台上获得一致的结果,或者它容易受到与System.Single和System.Double相同的问题?
如果System.Decimal是一致的,则是否有任何免费库为其实现超越函数(cos、sin、tan、sqrt、log等)?