输出以流式传输精确的浮点数字



我对浮点数精度有问题:

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 上进行了测试

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

小数精度决定的最大位数在插入操作中编写以表示浮点值。

您可能正在寻找的是将setprecision与fixed相结合。

相关内容

  • 没有找到相关文章

最新更新