Число с плавающей точкой не выводится с нужной точностью в с++
#include <cstdio>
#include <iostream>
int main() {
long double a = 10 / 3.0;
std::cout << a <<std::endl;
printf("%Lf\n", a);
}
/* вывод:
3.33333
3.333333
*/
Никак не могу понять, куда деваются тройки после запятой, тип long double должен выдавать куда бОльшую точность. Причем цифр недостает и при выводе с помощью cout, и при выводе с помощью printf. И по какой причине количество цифр после запятой различается при разных способах вывода?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Указывайте точность для вывода - например, для вывода 15 знаков после запятой это выглядит так:
cout << fixed << setprecision(15) << a <<std::endl;
printf("%.15Lf\n", a);
Если не указывать ничего - выводятся стандартные 6 знаков.