математика — C ++: записать двойное приближение в файле ofstream, например, printf (& quot;% f ….)

У меня есть эта проблема. Я получаю результат от функции double sin(double x)библиотеки cmath. Я хочу записать этот результат в файл, объявленный как ofstream fileи я хочу, чтобы когда результат был близок к нулю, напишите 0.000000 и не 1.22465e-16,
Например, я попробовал:

`double x=sin(interval*c);
file<<"value:"<<x;
printf("value:%f",x);`

где умножение между intervalа также c около π.

Но в файле написано1.22465e-16пока в оболочке написано 0.000000, Как я могу сделать, чтобы получить приближение0.000000 в файле ofstream? Спасибо всем

0

Решение

Если вы хотите того же формата "%f" Спецификатор использует (а не по умолчанию, который "%g"), вы бы использовали

std::cout << std::fixed;

Чтобы восстановить исходный формат, т. Е. Вернитесь к использованию того же формата, что и "%g" вы бы использовали

std::cout << std::defaultfloat; // C++11
std::cout.setf(std::ios_base::fmtflags(), std::ios_base::floatfield); // pre C++11
4

Другие решения

Вы можете проверить, находится ли он ниже порогового значения, и просто установить его на 0

 if(fabs(x) < 1e-8) x = 0;
1

По вопросам рекламы [email protected]