精确输出流浮点数

问题描述 投票:0回答:1

我对浮点数精度有疑问:

int main(void) {
  double b = 106.829599;
  float a = b;
  std::cerr << std::setprecision(6) << "a = " << a << "; b = " << b << std::endl;
  std::cerr << std::setprecision(7) << "a = " << a << "; b = " << b << std::endl;
}

结果是:

a = 106.83; b = 106.83

a = 106.8296; b = 106.8296

所以,我的问题是为什么第一行的数字这么短(我期望看到 106.829)

gcc 4.1.2,我也在LWS

做了测试
c++ stream numbers precision
1个回答
9
投票

实际上,106.829599 四舍五入到 6 位(3 位小数)后为 106.830,显示为 106.83,因为 set precision 的 6 位精度只是最大值。

小数精度决定了最大位数为 写在插入操作上以表达浮点值。

您可能正在寻找将 set precision 与 fixed 结合起来。

© www.soinside.com 2019 - 2024. All rights reserved.