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

时间:2010-06-03 16:04:59

标签: c# .net math class double

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

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

还有其他办法吗?

9 个答案:

答案 0 :(得分:9)

也许Decimal type会对你有用吗?

答案 1 :(得分:6)

您可以使用java.math中免费提供的任意精度BigDecimalusing java.math; public void main() { BigDecimal big = new BigDecimal("1234567890123456789011223344556677889900.0000009876543210000987654321"); big.add(new BigDecimal(1.0)); Debug.Print(big); } 是Microsoft J# redistributable package的一部分,是托管的.NET库。

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

{{1}}

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

  

1234567890123456789011223344556677889901.0000009876543210000987654321

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

答案 2 :(得分:4)

如果您使用它,那么F#库也有一些非常大的数字类型......

答案 3 :(得分:3)

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

答案 4 :(得分:3)

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

Quadruple Precision Double in C#

  

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

答案 5 :(得分:2)

如果可能,请使用decimal

答案 6 :(得分:2)

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

答案 7 :(得分:2)

无耻插件:QPFloat将IEEE标准模仿为完全精确。

答案 8 :(得分:1)

如果可以的话,

Decimal是128位。