对不起,我有一个非常基本的问题。
这是一个非常简单的计算,一个整数(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;
}
答案 0 :(得分:6)
使用Maple程序,我得到了
Maple是一种特殊工具,与其他人一样:
支持任意精度的符号和数值计算
另一方面,C ++是一种通用编程语言。作为一种语言,它支持精度有限的浮点运算。你不能期望在那里抛出任意精度,并期望得到与Maple相同的结果。因此,您需要使用任意精度库(不是标准C ++的一部分)或切换到支持它的其他语言。