首页  >  文章  >  后端开发  >  为什么 `std::cout. precision()` 不按预期显示尾随零?

为什么 `std::cout. precision()` 不按预期显示尾随零?

Susan Sarandon
Susan Sarandon原创
2024-11-11 08:26:02239浏览

Why Doesn't `std::cout.precision()` Display Trailing Zeros as Expected?

正确使用 std::cout. precision() 进行尾随零显示

使用 std::cout. precision( 指定的精度) 确定格式化浮点数时要包含的小数位数。但是,在某些情况下,尾随零可能不会按预期显示。

考虑以下代码片段:

#include <iostream>
#include <stdlib.h>

int main() {
  int a = 5;
  int b = 10;
  std::cout.precision(4);
  std::cout << (float)a / (float)b << "\n";
  return 0;
}

此代码尝试将两个整数相除的结果输出为浮点数- 精度为小数点后四位的点数。但是,输出显示“0.5”而不是预期的“0.5000”。出现这种情况是因为在执行除法时整数数据类型隐式转换为浮点,但精度尚未专门应用于整数到浮点的转换。

要正确显示尾随零,需要附加一个操纵器 std::fixed 必须与 std::cout:

#include <iostream>
#include <stdlib.h>
#include <iomanip>

int main() {
  int a = 5;
  int b = 10;
  std::cout << std::fixed;
  std::cout << std::setprecision(4);
  std::cout << (float)a / (float)b << "\n";
  return 0;
}

一起使用 std::fixed 操纵器指示 std::cout 以定点表示法输出浮点数,其中包括尾随零。 std::set precision(4) 操纵器指定输出应具有四位小数的精度。

通过合并 std::fixed 操纵器,代码片段的输出现在可以正确显示尾随零,从而产生正如预期的“0.5000”。

以上是为什么 `std::cout. precision()` 不按预期显示尾随零?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn