0

我有这个问题。我从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,而在shell中是写的0.000000。如何0.000000在 ofstream 文件中获得近似值?谢谢大家

4

2 回答 2

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
于 2013-11-12T20:44:54.070 回答
1

您可以检查它是否低于阈值并将其设置为 0

 if(fabs(x) < 1e-8) x = 0;
于 2013-11-12T20:46:22.337 回答