6

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

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

4

5 回答 5

12

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

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

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

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

于 2008-08-25T14:37:16.727 回答
6

在 C# 4.0 中使用BigInteger 类型

于 2010-04-20T07:34:24.327 回答
4

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

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

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

我讨厌重新发明轮子。

于 2008-08-25T14:30:03.780 回答
4

你问的是任意精度算术,这是一个已经写过书的主题。如果您只想要一个简单且相当高效的 C# BigNum 库,您可能需要查看IntX

于 2008-11-07T23:09:24.973 回答
3

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

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

于 2008-08-27T13:29:33.237 回答