This question already has answers here:
C++ calculating more precise than double or long double

(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