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

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

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

还有另一种方法吗?

也许Decimal类型适合你?

您可以使用java.math免费提供的任意精度BigDecimal ,它是Microsoft的J#redistributable包的一部分,是一个托管的.NET库。

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

 using java.math; public void main() { BigDecimal big = new BigDecimal("1234567890123456789011223344556677889900.0000009876543210000987654321"); big.add(new BigDecimal(1.0)); Debug.Print(big); } 

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

1234567890123456789011223344556677889901.0000009876543210000987654321

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

F#库有一些非常大的数字类型,如果你可以使用它…

如果Decimal不适合你,请尝试使用大整数实现(或从某处获取代码) Rational算术。 这将提供您所需的精度。

我一直在寻找解决方案很长一段时间,今天遇到了这个库:

C#四倍精密双倍

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

如果可能,请使用decimal

十进制是128位(16字节)值类型,用于高精度计算。 它是一种浮点类型,在内部表示为基数10而不是基数2(即二进制)。 如果你需要高度精确,你应该使用十进制 – 但缺点是十进制比使用浮点数慢约20倍。

无耻插件: QPFloat将IEEE标准模拟为全精度。

如果可行的话, Decimal是128位。