<分区>
我正在尝试使用大小数 C++ 对数字进行加减法和乘法运算。
示例:
4125487821547.87879845215584844588 - 354556689.899455132265468
到目前为止我想的是我需要将输入保存为字符串,但不确定之后如何进行。
提前感谢帮助 谢谢
<分区>
我正在尝试使用大小数 C++ 对数字进行加减法和乘法运算。
示例:
4125487821547.87879845215584844588 - 354556689.899455132265468
到目前为止我想的是我需要将输入保存为字符串,但不确定之后如何进行。
提前感谢帮助 谢谢
最佳答案
您需要一个大整数类或库。有几种可用的实现,只是为了让您概述如何使用这种外部依赖,这里是一个基于 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 header ,不需要链接。查看docs在继续使用该库时。
关于c++ - 两个字符串之间的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313253/