c# - 在 C# 中使用 System.Decimal 进行数学运算

标签 c# math decimal

需要能够对十进制数使用标准数学函数。准确性非常重要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,但我们还没有。

我在谷歌上搜索了一下数学库并整理了这个列表:

  1. Mathdotnet ,一个用 C#/.Net 编写的数学开源(MIT/X11、LGPL 和 GPL)库,旨在为符号代数和数值/科学计算提供一个自包含的干净框架。

  2. Extreme Optimization Mathematics Library for .NET (付费)

  3. DecimalMath这是一个相对较新的产品,它宣传自己为:Microsoft 忘记的对 Decimal 的可移植数学支持等等。 听起来很有前途。

关于c# - 在 C# 中使用 System.Decimal 进行数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55086629/

相关文章:

c# - 尝试在运行时调整 bat (桨,乒乓球)的速度

c# - 触摸板作为鼠标输入控制

java - 创建一个java程序来求解二次方程

c# - 以编程方式制定图像轮廓(最好是 C#/C++ 编码,或伪编码)

math - 十六进制数的前导字符 (x0)

python - 如何查看数字是否以 .0 结尾

ios - 如何在 Swift 中将小数截断到 x 位

c# - 像在 C 中一样在 C# 中使用 struct - 可以吗?

c# - 关于 xamarin 的通知。 Android.Resource.Drawable.SymActionEmail 错误

python - python 中的数学错误计算 log(det(AA^T)+1)