用于添加非常大数字的数据结构?

时间:2010-01-26 09:29:58

标签: c

如何添加1234567890123456789012345678901234567890之类的数字,这些数字无法使用原始数据类型指定?你将使用什么样的数据结构?

5 个答案:

答案 0 :(得分:4)

您将需要一个实现任意精度算术的C库。有很多可供选择。一个受欢迎的选择是GNU Multi-Precision Library

答案 1 :(得分:2)

除了使用像MAPMMPIR这样的库之外,您可以尝试将它们保存在double中(如果不需要精度),或者根据数组汇总您自己的实现。

Google在C bignum上寻找替代方案。

这可能是a nice place to start

答案 2 :(得分:2)

如果您只想添加问题所暗示的整数,那么您可以简单地使用字符串并使用2D查找表实现单位数添加。如果您的要求更复杂,那么正如其他人所建议的那样,您需要某种库来处理大数字。无论您使用现有的库还是自己的库,都取决于您。

答案 3 :(得分:2)

我最近一直使用MPFR - GNU多精度浮点计算和正确的舍入库。 API在结构上与MAPM类似,根据我的经验使用它非常简单。

但是,如果您只使用整数,则可能会从具有单独整数类型(即MAPM)的多精度库中获得更好的性能,因为MPFR专用于浮点。

答案 4 :(得分:0)

我将使用 STACKS 。 通过首先放置具有最高位值的数字,可以将数字存储在堆栈中,以便一个位置的数字应该位于堆栈的顶部。弹出两个堆栈并添加堆栈中的数字,其中进位最初为零。将结果逐位推送到第三个堆栈中。重复,直到两个堆栈都是空的。