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

标签 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?谢谢大家

最佳答案

如果你想要 "%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

关于C++:在 ofstream 文件中写一个双近似值,比如 printf("%f....),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19939467/

相关文章:

c++ - Windows 7共享内存的奇怪错误

javascript - 如何计算两点之间的 Angular ?

algorithm - 什么算法确定点与贝塞尔曲线的接近程度?

java - Java Android 中的 Double/Float 输出问题

c++ - get 方法上的代码崩溃,C++

c++ - 导入 msado15.dll 后未生成 msado15.tlh

c++ - 将 CString 传递给 fprintf

double - 为什么 double.MaxValue 比 long.MaxValue 大?

c++ - 如何制作一个容器来容纳任何类型的指针

java - 三角形的面积(给出 3 分)