当对整数数据类型(如 double 或 int64)不足的非常大的数字进行计算时,可能需要一个单独的类来处理如此大的数字。
有没有人愿意提供一个有效的算法来最好地做到这一点?
当对整数数据类型(如 double 或 int64)不足的非常大的数字进行计算时,可能需要一个单独的类来处理如此大的数字。
有没有人愿意提供一个有效的算法来最好地做到这一点?
您的问题有两种解决方案:
简单的方法: 使用外部库,例如 ' GNU MP Bignum 库,忘记实现细节。
困难的方法: 设计自己的包含多个高阶数据类型(如 double 或 int64 变量)的类/结构,并使用运算符重载(在 C++ 中)或通过名为 add、subtract、multiply、shift 等的方法(在 JAVA 中)为它们定义基本的数学运算和其他面向对象语言)。
如果您需要任何进一步的帮助,请告诉我。我过去做过几次。
在 C# 4.0 中使用BigInteger 类型
使用语言的内置功能对我有用。
Java 有BigInteger
and ,如果某个数字超出了 an或诸如此类BigDecimal
的范围,Python 会自动切换到类似于 Java 的对象。integer
至于其他语言,我不知道。
我讨厌重新发明轮子。
做自己的 BigNum 库很复杂,所以我会说像 jjnguy。使用您的语言提供的任何库作为库。
在 .net 中,引用 VisualJ dll,因为它们包含 BigInteger 和 BigDecimal 类。但是,您应该注意这些库的一些限制,例如缺少平方根方法。