4

我正在尝试用大小数 C++ 添加减法和乘法。

例子:

4125487821547.87879845215584844588 - 354556689.899455132265468

到目前为止,我认为我需要将输入保存为字符串,但不知道之后如何进行。

提前感谢帮助谢谢

4

1 回答 1

9

您需要一个大整数类或库。有几种可用的实现,只是为了给你一个关于如何使用这种外部依赖的概述,这里是一个基于 Boost 的解决方案:

#include <boost/multiprecision/cpp_int.hpp>

using BigInt = boost::multiprecision::cpp_int;

您现在可以通过将字符串或整数文字传递给构造函数来构造实例,并对这些对象执行所有标准算术运算,例如

const BigInt i("8787984521558484092344588");
const BigInt j("32308942039402934");

std::cout << i - j << "\n";

此类类的一个很好的细节是,它们通常为具有一个参数的非显式构造函数演示为数不多的合理场景之一,即为了与内置整数类型的平滑互操作性。例子:

int n = 42;

// Use builtin ints like BigInts via implicit BigInt(int) ctor:
std::cout << (i + n)/(j % 3) << "\n";

您只需要这些片段的 Boost 标头,不需要链接。继续使用此库时请查看文档。

于 2018-09-13T12:02:41.247 回答