Число с плавающей точкой не выводится с нужной точностью в с++

#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 знаков.

→ Ссылка