This question already has answers here:
C++ calculating more precise than double or long double
(2个答案)
5年前关闭。
嗨,我建立了一个算法来计算pi,但我为此使用了长浮点数,因此我只得到3.14159,所以我需要更高的精度。怎么样?
这是代码:
顺便说一句,我的高中有一台24核(12个双核节点) super 计算机,以防万一
在Codepad上运行时,这给了我3.141592653543740176758092275122180581093。
因为
(2个答案)
5年前关闭。
嗨,我建立了一个算法来计算pi,但我为此使用了长浮点数,因此我只得到3.14159,所以我需要更高的精度。怎么样?
这是代码:
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
long double a, l, p, pi, r;
long long int n, m;
r = 100000;
a = r * sqrt (3) / 2 ;
n = 100000;
m = 6;
while (n > m)
{
a = sqrt (r / 2 * (r + a));
m = m * 2 ;
}
l = sqrt (4 * (pow (r, 2) - pow (a, 2)));
p = m * l;
pi = p / (2 * r) ;
cout << pi << endl;
cout << "number of corners used: " << m << endl;
return 0;
}
顺便说一句,我的高中有一台24核(12个双核节点) super 计算机,以防万一
最佳答案
该数字比显示的精度更高。您只需要问:
cout << std::setprecision(40) << pi << endl;
在Codepad上运行时,这给了我3.141592653543740176758092275122180581093。
因为
double
应该具有足够的精度来进行基本计算。如果您需要计算数百万个地点,则没有足够大的标准浮点表示形式来处理。10-02 16:27