Как реализовать setprecision с помощью fout

У меня есть текстовый файл с тремя значениями.

2.5 7.6 -3

Я пытаюсь вывести значения в другой текстовый файл с десятичной точкой из 5 знаков. Я делал это раньше с cout, однако у меня возникли проблемы с реализацией этого на fout. Ниже я пытаюсь сделать это похоже на cout.

ofstream fout("roots.txt");

fout << setprecision(5);
fout << "The equation " << setprecision(5) << a << "x^2 + " << setprecision(5) << b << "x + " << setprecision(5) << c << " has roots " << root1 << " and " << root2 << endl;
fout.close();

Я ожидаю, что вывод в текстовом документе будет

Уравнение 2,50000x^2 + 6,70000x + -3,00000 = 0 имеет корни 0,39078 и -3,07078.

В настоящее время результат таков: уравнение 2,5x^2 + 7,6x + -3 имеет корни 0,35361 и -3,3936.


person Shaheer Khan    schedule 12.10.2019    source источник
comment
Можете ли вы прояснить вашу проблему? Какой результат вы получаете вместо ожидаемого? std::setprecision работает с вашим fout так же, как и с std::cout.   -  person walnut    schedule 12.10.2019
comment
@uneven_mark Итак, прямо сейчас я получаю вывод: уравнение 2,5x^2 + 7,6x + -3 имеет корни 0,35361 и -3,3936 – цель состоит в том, чтобы каждое значение состояло из 5 знаков после запятой, например вывод 2,50000x^2 + 6,70000x + -3,00000 = 0 имеет корни 0,39078 и -3,07078   -  person Shaheer Khan    schedule 12.10.2019
comment
@uneven_mark Извините, я добавил это.   -  person Shaheer Khan    schedule 12.10.2019
comment
@uneven_mark Вот оно! Я добавил исправлено, и он сделал вывод правильно. Спасибо!   -  person Shaheer Khan    schedule 12.10.2019