我有一个应用程序,我希望能够使用大数字和非常精确的数字。为此,我需要一个精确的解释,IntX只适用于整数。
.net框架中是否有类甚至第三方(最好是免费的)可以这样做?
还有其他办法吗?
答案 0 :(得分:9)
也许Decimal type会对你有用吗?
答案 1 :(得分:6)
您可以使用java.math
中免费提供的任意精度BigDecimal,using 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位。