当对非常大的数字进行计算时,整数数据类型(如double或int64)不足,可能需要一个单独的类来处理如此大的数字。
是否有人愿意提供有效的算法来解决这个问题?
答案 0 :(得分:12)
您的问题有两种解决方案:
简单方法: 使用“The GNU MP Bignum Library等外部库,忘记实施细节。
艰难的方式: 设计自己的类/结构,包含多个高阶数据类型,如double或int64变量,并使用运算符重载(在C ++中)或通过名为add,subtract,multiply,shift等的方法为它们定义基本数学运算(在JAVA和其他OO中)语言)。
如果您需要任何进一步的帮助,请与我们联系。我过去曾经做过几次这样的事情。
答案 1 :(得分:6)
在C#4.0中使用BigInteger type
答案 2 :(得分:4)
使用语言的内置功能为我工作。
Java有BigInteger
和BigDecimal
,如果数字超出integer
或诸如此类的范围,Python会自动切换到类似于Java的对象。
至于其他语言,我不知道。
我讨厌重新发明轮子。
答案 3 :(得分:4)
您问的是arbitrary-precision arithmetic books have been written,IntX。如果您只想要一个简单且相当高效的C#BigNum库,您可能需要查看{{3}}。
答案 4 :(得分:3)
做你自己的BigNum库很复杂,所以我会说像jjnguy。使用您的语言提供的任何库。
在.net中,引用VisualJ dll,因为它们包含BigInteger和BigDecimal类。但是,您应该了解这些库的一些限制,例如缺少平方根方法。