.net中有128或256位双等级吗?

aks*_*hik 7 .net c# math double class

我有一个应用程序,我希望能够使用大数字和非常精确的数字.为此,我需要一个精确的解释,IntX只适用于整数.

在.net框架中是否有一个类甚至第三方(最好是免费的)可以这样做?

还有另一种方法吗?

Tim*_*ker 9

也许Decimal类型适合你?


Abe*_*bel 6

您可以使用免费提供的,任意精度,BigDecimal的距离java.math,这是一部分J#再发行组件包微软,是一种管理的.NET库.

在项目中放置对vjslib的引用,你可以这样:

using java.math;

public void main() 
{
    BigDecimal big = new BigDecimal("1234567890123456789011223344556677889900.0000009876543210000987654321");
    big.add(new BigDecimal(1.0));
    Debug.Print(big);
}
Run Code Online (Sandbox Code Playgroud)

将以下内容打印到调试控制台:

1234567890123456789011223344556677889901.0000009876543210000987654321

请注意,正如已经提到的,.NET 2010包含一个BigInteger类,事实上,它已经在早期版本中可用,但仅作为内部类(即,您需要一些反射才能使其工作).


Jus*_*tin 5

F# 库也有一些非常大的数字类型,如果您愿意使用的话......

  • 你好,Justin,有兴趣了解更多信息 - 我们可以在 f# 中执行长双精度(80 位或 128 位)吗?C#中所有十进制类型都有高位但没有指数 (2认同)

Dr.*_*ABT 5

我长期以来一直在寻找解决方案,今天遇到了这个库:

C# 中的四倍精度双精度

有符号 128 位浮点数据类型库,具有 64 个有效精度位(双精度数为 53 位)和 64 位指数(双精度数为 11 位)。四边形比双精度数具有更高的精度和更大的范围,在处理非常大或非常小的值(例如概率模型中的值)时特别有用。从版本 2.0 开始,所有 Quad 算术都会被检查(下溢到 0,上溢到 +/- 无穷大),具有特殊的 PositiveInfinity、NegativeInfinity 和 NaN 值,并遵循与 .Net Double 算术和比较运算符相同的规则(例如 1/ 0 == PositiveInfinity, 0 * PositiveInfinity == NaN, NaN != NaN),使其成为现有代码中 Double 的便捷替代品。