C ++:在ofstream文件中写一个双近似值,比如printf(“%f ....”)

时间:2013-11-12 20:42:17

标签: c++ math double ofstream cmath

我有这个问题。我从库cmath的函数double sin(double x)得到结果。我想将此结果写入声明为ofstream file的文件中,我希望当结果接近于零时,写入0.000000而不是1.22465e-16。 例如,我试过:

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

其中intervalc之间的乘法大约为π。

但是在文件中写的是1.22465e-16,而在shell中写的是0.000000。如何在ofstream文件中获得近似值0.000000?谢谢大家

2 个答案:

答案 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;