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

时间:2018-09-13 11:58:48

标签: c++ multiprecision

我试图用大十进制C ++加减乘数。

示例:

  

4125487821547.87879845215584844588-354556689.899455132265468

到目前为止,我想到的是我需要将输入另存为字符串,但不确定在此之后如何进行。

提前了解帮助 谢谢

2 个答案:

答案 0 :(得分:10)

您需要一个大的整数类或库。有几种可用的实现,只是为了概述如何使用这种外部依赖关系,这里是基于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头,不需要链接。继续使用该库时,请检出docs

答案 1 :(得分:-2)

您可以使用简单的double数据类型对长整数进行加,减,乘或除操作,如下所示...

#include<iostream.h>
#include<stdio.h>
#include<conio.h>


int main(){
double a = 4125487821547.87879845215584844588; 
double b = 354556689.899455132265468;
double c = a - b;

cout<<c;
return 0;
}