【问题标题】:Most efficient implementation of a large number class大数类的最有效实现
【发布时间】:2008-08-25 14:20:34
【问题描述】:

在对整数数据类型(例如 double 或 int64)不足的非常大的数字进行计算时,可能需要一个单独的类来处理如此大的数字。

有没有人愿意提供一个有效的算法来最好地做到这一点?

【问题讨论】:

    标签: language-agnostic bignum


    【解决方案1】:

    您的问题有两种解决方案:

    • 简单的方法: 使用外部库,例如 'The GNU MP Bignum Library,忘记实现细节。

    • 艰难的路: 设计您自己的包含多个高阶数据类型(如 double 或 int64 变量)的类/结构,并使用运算符重载(在 C++ 中)或通过名为 add、subtract、multiply、shift 等的方法(在 JAVA 和其他 OO 中)为它们定义基本数学运算语言)。

    如果您需要任何进一步的帮助,请告诉我。我过去做过几次。

    【讨论】:

      【解决方案2】:

      在 C# 4.0 中使用 BigInteger type

      【讨论】:

        【解决方案3】:

        您在询问arbitrary-precision arithmetic,这是books have been written 的主题。如果您只想要一个简单且相当高效的 C# BigNum 库,您可能需要查看IntX

        【讨论】:

          【解决方案4】:

          使用语言的内置功能对我有用。

          Java 有BigIntegerBigDecimal,如果数字超出integer 或诸如此类的范围,Python 会自动切换到类似于Java 的对象。

          至于其他语言,我不知道。

          我讨厌重新发明轮子。

          【讨论】:

            【解决方案5】:

            创建自己的 BigNum 库很复杂,所以我会说像 jjnguy。使用您的语言提供的任何库作为库。

            在 .net 中,引用 VisualJ dll,因为它们包含 BigInteger 和 BigDecimal 类。但是,您应该注意这些库的一些限制,例如缺少平方根方法。

            【讨论】:

              猜你喜欢
              • 2018-12-31
              • 2012-10-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-07-16
              • 2012-06-12
              • 1970-01-01
              相关资源
              最近更新 更多