c++ - 两个字符串之间的数学运算

标签 c++ multiprecision

<分区>

我正在尝试使用大小数 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/

相关文章:

c++ - 在 C++ 中打印 vector 的所有元素的最佳方法是什么?

c++ - 编写 HugeInteger 类

c++ - 使用 boost 多精度库的问题

c - 存储和打印大于 2^64 的整数值

c++ - 创建具有特定精度的新 cpp_dec_float 类型

c++ - 如何在 libxml2 中获取属性并保存在 C++ 的 STL 映射中?

C++ 家庭作业,遇到一些边缘情况和异常输入

c++ - 反转空终止字符串 (C++)

c++ - C++ 循环内定义的局部变量

c++ - std::vector<std::complex<boost:multiprecision::float128>>(N).data() 可以安全地重新解释为 fftwq_complex* 吗?