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