#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
system("clear");
int i = 3;
double j = 2.777777;
j = j + i;
double d3;
int a1 = 2;
int a2 = 3;
d3 = static_cast<double>(a1) / a2;
cout.precision(5);
cout << j << endl;
cout << d3;
return 0;
}
При выполнении полученного бинарика выдаётся результат:
5.7778
0.66667
Получается, что по факту cout.precision(5); распространяется только на переменную d3, для переменной j задано 4 знака после запятой, да и то, непонятно каким образом. Подскажите, пожалуйста, в чём тут дело?
Для формата с плавающей запятой .precision(5) — задаёт не 5 знаков после точки, а 5 значащих знаков. Чтобы получить 5 после точки, надо переключить в режим с фиксированной точкой:
Для формата с плавающей запятой .precision(5) — задаёт не 5 знаков после точки, а 5 значащих знаков. Чтобы получить 5 после точки, надо переключить в режим с фиксированной точкой: