【发布时间】:2013-08-29 20:07:54
【问题描述】:
我在.Net 4.0 中使用System.Numerics.BigInteger 和BCL 中的BigRational 类来构建数学解析器/计算器应用程序。目标是编写一个支持大数字的全功能数学解析器......所以我需要使用数学函数。但不幸的是,所有 System.Math 函数都返回典型的数据类型,如 float 和 double,因此不是很准确。我需要更精确。我研究了 microlib.dll 但对于正弦函数,发现了这个:
[SecuritySafeCritical, __DynamicallyInvokable]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern double Sin(double a);
我知道许多数学函数不是在 .Net 中实现的,而是直接来自硬件代码。那么我可以使用这些函数并获得高精度或大整数吗?如果不是,那么自己实施它们的最佳方法是什么? (性能也很重要)任何资源或指向正确的方向将不胜感激!
【问题讨论】:
-
据我所知,十进制类型比精度高一倍
-
是的,但这也不够精确!我需要更高的精度,比如大约一千个十进制数字。
-
这取决于你需要多少位数,因为速度加倍将是一个更好的解决方案。编辑:因为你写了你需要更精确:你知道 j++ 运行时的 BigDecimal 类型吗?跨度>
-
谢谢,但是微软仍然支持 j++ 吗?如果是,我如何在 C# 中使用它?