sggggr
sggggr
2017-11-17 08:12
采纳率: 66.7%
浏览 2.4k

C++ 中怎样控制数据输出精度?

代码很简单如下:

ofstream outfile("C:\\Users\\Song\\Desktop\\20171106\\final.txt", ios::in | ios::out | ios::binary);

    for (int b = 1; b < 257; b++)
    {
        outfile  << y[b] << "";
    }
    outfile.close();

我的问题是:
数组y内显示8.7391425897412365e19,输出到TXT文件内以后变成了8.73914e-019,想问一下怎样才能控制输出到tXT的精度?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • ranyixu11
    doggy_coder 2017-11-17 09:51
    已采纳

    比如:
    图片说明
    输出:87391427179357143040.00

    点赞 评论
  • barry_di
    barry_di 2017-11-17 08:59

    for (int b = 1; b < 257; b++)
    {
    char temp[64];
    sprintf(temp, "%lf", y[b]);
    outfile <<temp << "";
    }

    点赞 评论
  • ranyixu11
    doggy_coder 2017-11-17 09:28

    使用setprecision(n)设置小数位数,outfile<< setprecision(6)<<temp<<"";

    点赞 评论
  • ranyixu11
    doggy_coder 2017-11-17 09:45

    结合setprecision和fixed,具体你可以百度得到

    点赞 评论
  • yc_wsrgan
    yc_wsrgan 2017-11-17 13:30

    比如:5.3f
    表示无五位有效数字,小数点前两位,小数点后三位

    点赞 评论
  • qq_39574690
    两水先木示 2017-11-18 01:14

    强制转换为float 你这个是double类型的,变为float精度就少了,楼上有几位是输出精度改变,而不是你那个变量的本身改变,所以你的问题是怎么把
    变量缩小精度范围。我不会这个问题。。

    点赞 评论
  • m0_37638236
    m0_37638236 2017-11-18 08:35

    转化成String类型试一试。

    点赞 评论
  • qq_31675951
    Annattshi 2017-11-20 06:00

    将Y转换为string类型输出则可保持原样不变

    点赞 评论
  • sinat_28519535
    玻璃心orz 2017-11-27 12:20

    将数据转换成float或者double型

    点赞 评论
  • Varible
    Varible 2020-03-06 12:15

    之前加一句:
    cout.precision(精度);
    但这样做有一点注意:之后使用cout时都保持这个精度。
    可以使用以下格式来解决上述问题:
    cout << fixed << setprecision(精度) << 变量/常量;
    另外有个C语言的方法:printf格式化输出
    printf("%.2f",var);//输出var并保留两位小数。

    点赞 评论

相关推荐