我有这个问题。我从库cmath的函数double sin(double x)
得到结果。我想将此结果写入声明为ofstream file
的文件中,我希望当结果接近于零时,写入0.000000
而不是1.22465e-16
。
例如,我试过:
`double x=sin(interval*c);
file<<"value:"<<x;
printf("value:%f",x);`
其中interval
和c
之间的乘法大约为π。
但是在文件中写的是1.22465e-16
,而在shell中写的是0.000000
。如何在ofstream文件中获得近似值0.000000
?谢谢大家
答案 0 :(得分:4)
如果您希望"%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
答案 1 :(得分:1)
您可以检查它是否低于阈值并将其设置为0
if(fabs(x) < 1e-8) x = 0;