C++, duża liczba miejsc po przecinku

0

Witam!

Chciałbym wyświetlić jakąś liczbę niewymierną, np liczbę Eulera do 30 miejsca po przecinku - jak to zrobić ?

poniżej zamieszczam kod programu, który liczy liczbę e jako sumę szeregu, jednak podaje wynik tylko do 19 miejsca po przecinku, jak to można zmienić ?

#include <iostream>
#include <math.h>
#include <windows.h>

using namespace std;

double suma=1, powr=1;
double wartosc_biezaca, wartosc_poprzednia, dokladnosc, zadanaDokladnosc=0.001;

int freq, start, end, diff;
double czas;

float silnia(int n);
int i=1;

int main()
{
  cout.precision(30);  
  cout.setf(ios::fixed,ios::floatfield); 
  
  wartosc_poprzednia = wartosc_biezaca = 1.0;

  QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
  QueryPerformanceCounter((LARGE_INTEGER*)&start);
     
  do
  {
  powr= silnia(i);   
  suma += 1.0/powr;
  cout<< dokladnosc<<endl;
  
  wartosc_poprzednia = wartosc_biezaca;
  wartosc_biezaca = wartosc_biezaca+1/powr;
  dokladnosc = fabs(wartosc_poprzednia - wartosc_biezaca);
  
  i++;
  }while(dokladnosc>=zadanaDokladnosc);
  
  QueryPerformanceCounter((LARGE_INTEGER*)&end);
  diff = ((end - start) * 1000) / freq;

  unsigned int milliseconds = (unsigned int)(diff & 0xffffffff);
  cout <<"e : "<<suma;
  cout <<"  milliseconds: "<<milliseconds <<endl;

  system("PAUSE > null");
  return 0;
} 

float silnia(int n)
{
    float s=1;
    for ( int i=1;i<=n;i++)
    {
    s = s * i;
    }
    return s;
}

 
0

np. bignum

0

OK, thx za info, a czy można to zrobić używając standardowych bibliotek ?
i taki przykład:

 
double a=1;
double b=3;
double c;

int main()
{
    cout.precision(30);  
    cout.setf(ios::fixed,ios::floatfield); 
    c=a/b;
    cout<<c<<endl;
    system("PAUSE");
     
}

i np chce wyświetlić 30 trójek po przecinku...

1 użytkowników online, w tym zalogowanych: 0, gości: 1