我需要能够对十进制数使用标准数学函数。准确性非常重要。 double
不是可接受的替换。 C#中十进制数如何实现数学运算?
编辑
我正在使用 System.Decimal
。我的问题是 System.Math
不适用于 System.Decimal
。例如,以下函数不适用于 System.Decimal
:
- 系统.数学.Pow
- 系统.数学.Log
- 系统.数学.Sqrt
最佳答案
嗯,Double使用 floating point除非你正在为 3D 图形或其他东西做三角函数,否则这不是你想要的。
如果你需要做简单的数学运算,比如除法,你应该使用System.Decimal .
来自 MSDN:decimal 关键字表示 128 位数据类型。与浮点类型相比,小数类型具有更高的精度和更小的范围,这使其适用于金融和货币计算。
更新:经过一些讨论,问题是您想要使用 Decimals,但 System.Math 只采用 Double 来实现几个关键功能。遗憾的是,您使用的是高精度数字,由于 Decimal 是 128 位而 Double 只有 64 位,转换会导致精度损失。
显然有一些可能的计划让大部分 System.Math 处理 Decimal,但我们还没有。
我在谷歌上搜索了一下数学库并整理了这个列表:
Mathdotnet ,一个用 C#/.Net 编写的数学开源(MIT/X11、LGPL 和 GPL)库,旨在为符号代数和数值/科学计算提供一个自包含的干净框架。
DecimalMath这是一个相对较新的产品,它宣传自己为:Microsoft 忘记的对 Decimal 的可移植数学支持等等。 听起来很有前途。
关于c# - 在 C# 中使用 System.Decimal 进行数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55086629/