Избегайте округления N-й ди git пи - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь решить первую проблему из этой коллекции
Чтобы найти и отобразить значение Pi до N-го числа git (принимается как пользовательский ввод, ограниченный некоторым максимальным значением, мой угадайте максимальное количество десятичных разрядов, которое может удерживать самый большой ds, которое, я думаю, будет длинным, двойным?)
Ниже приведен фрагмент моей попытки.

//declarations 

typedef numeric_limits< long double > db;
    int MAX = db::digits10;
    int N = 0; //digit allowance
    long double pi_val = M_PI;
    string string_pi;

//user input
    while(1){
        cout << "Enter a value of n < or = " << MAX << endl;
        cin >> N;
        if(N>18){cout << "Lesser please" << endl;}
        else
            break;
    }

//outputs
    cout << "Pi till the " << N << " digit is: ";

    cout << setprecision(N+1) << fixed << pi_val << endl;

    string_pi = to_string((long double)pi_val * pow(10, N));

    cout << string_pi << endl;

    cout << "The Nth digit of pi is: " << string_pi[N] << endl; 

Ps Я знаю, что существуют более новые способы решения проблемы go, но, поскольку я крайне новичок в cpp, я достиг бы лучшего ощущения достижения благодаря заставляя мою идею работать.
Теперь проблема , она правильно отображает Nth di git, но вывод Pi до значения Nth всегда округляется, несмотря на 'fixed' и 'setprecision ()', поэтому мне пришлось отобразить дополнительный ди git, чтобы соответствовать последнему выводу
Как я могу исправить эту проблему, если это возможно, не меняя основной лог c Я использовал
Спасибо

...