У меня есть эта проблема. Я получаю результат от функции 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? Спасибо всем
Если вы хотите того же формата "%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
Вы можете проверить, находится ли он ниже порогового значения, и просто установить его на 0
if(fabs(x) < 1e-8) x = 0;