【发布时间】:2013-02-01 00:18:59
【问题描述】:
我正在自学 C++,在 this practice question 上它要求编写可以将 PI 计算到 >30 位的代码。我了解到 double / long double 在我的计算机上都是 16 位精确的。
我认为这个问题的教训是能够计算超出可用精度的精度。因此,我该怎么做?有可能吗?
我现在计算 Pi 的代码是
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main(){
double pi;
pi = 4*atan(1.0);
cout<<setprecision(30)<<pi;
return 0;
}
输出为 16 位,pi 为 30 位列在下面以供比较。
3.1415926535897931
3.141592653589793238462643383279
有什么提高精度的建议吗?或者这件事永远不会重要?或者,如果您认为我应该在这里学习其他课程,请随时提供。谢谢!
【问题讨论】:
-
你需要精确的是算法:cplusplus.com/forum/beginner/1149
-
@Cygwinnian 谢谢。这也是一种巧妙的编码方式。
-
你可能会觉得这很有趣:math.hmc.edu/funfacts/ffiles/20010.5.shtml