如何在c ++中将精度设置为100位?

时间:2017-03-07 21:24:45

标签: c++

对不起,我有一个非常基本的问题。

这是一个非常简单的计算,一个整数(22)除以另一个整数(7)。我希望c ++代码在代码内部和输出值中的实际计算中都使用精确的100位精度。使用Maple程序,我得到了

restart;
Digits:=100;
evalf(22/7);

我得到的答案是,

3.142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857143

但我使用以下c ++代码并得到一些不同的答案。这只是在几个实际数字之后添加零,这是完全错误的。下面是我的c ++代码。

#include <iostream>
 using namespace std;
 int main()
 {
     cout << fixed;
     cout.precision(100);
     cout << "22/7 = " << 22/(double)(7) << endl;
     return 0;
}

1 个答案:

答案 0 :(得分:6)

  

使用Maple程序,我得到了

Maple是一种特殊工具,与其他人一样:

  

支持任意精度的符号和数值计算

另一方面,C ++是一种通用编程语言。作为一种语言,它支持精度有限的浮点运算。你不能期望在那里抛出任意精度,并期望得到与Maple相同的结果。因此,您需要使用任意精度库(不是标准C ++的一部分)或切换到支持它的其他语言。