Как вывести число Пи до определенного знака?

224
10 июля 2018, 00:00
long double ThisIsAPi = long double(M_PI);
int a = 0;
int b;
cout << "Vvv";
cin >> b;
for (a; a < b; a++) {
    cout << ThisIsAPi;
    system("pause");
    return 0;
}

system("pause");
return 0;
Answer 1

Число пи можно считать использовав ряд Лейбница, выводить, использовав манипулятор

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{    
    double pi{};
    int j = 1;
    const int prec = 10;
    for (int i = 1; i < 500000; ++i) {  // бесконечный ряд
        pi += (double)4 / j;
        j += 2;
        pi -= (double)4 / j;
        j += 2;
    }
    cout << setprecision(prec) << pi;
    return 0;
}
Answer 2

Попробуй std::cout.precision(7);

Answer 3

Вот, развлекался как-то. Алгоритм Spigot. Вывод пи с точностью, указываемой в командной строке:

#include <vector>
#include <string>
#include <iostream>
#include <iomanip>
using namespace std;
string Pi(int N)
{
    int M = (N*10+2)/3;
    vector<int> r(M,2);
    string pi;
    pi.reserve(N+1);
    for(int i = 0; i < N; ++i)
    {
        int carry = 0;
        int sum = 0;
        for(int j = M-1; j >= 0; --j)
        {
            r[j] *= 10;
            sum = r[j] + carry;
            int q = sum / (2*j+1);
            r[j]  = sum % (2*j+1);
            carry = q * j;
        }
        r[0] = sum % 10;
        int q = sum / 10;
        if (q >= 10)
        {
            q = q - 10;
            for(int j = pi.length()-1;;--j)
            {
                if (pi[j] == '9')
                    pi[j] = '0';
                else
                {
                    ++pi[j];
                    break;
                }
            }
        }
        pi += ('0' + q);
        if (i== 0) pi += '.';
    }
    return pi;
}
int main(int argc, const char * argv[])
{
    cout << Pi((argc == 1) ? 10 : atoi(argv[1])) << endl;
}
READ ALSO
Что значит запись типа 0x00

Что значит запись типа 0x00

открыл библиотеку для модуля на ардуины, там имеет место запись типа

207
Большой расход памяти

Большой расход памяти

Есть сетевое приложение основанное на qt + boost asio под ос linux 64 bitПри запуске размер занимаемой оперативной памяти составляет порядка 20Mb, но в процессе...

211
Изменение правила деления на 0

Изменение правила деления на 0

Что нужно изменить, или возможно хукнуть (перехватить) для изменения правила деления? В моих задачах при делении числа на 0 должен получаться...

184
Ошибка C2679 бинарный &ldquo;&lt;&lt;&rdquo;: не найден

Ошибка C2679 бинарный “<<”: не найден

Изучаю C++ по книге, и при написании такого кода

209