首页 >后端开发 >C++ >为什么 `std::cout. precision()` 不显示浮点数的尾随零?

为什么 `std::cout. precision()` 不显示浮点数的尾随零?

Susan Sarandon
Susan Sarandon原创
2024-11-08 21:14:01574浏览

Why Does  `std::cout.precision()` Not Display Trailing Zeros for Floating-Point Numbers?

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.5000,但它却打印出 0.5。这种差异是由于原始数据类型是整数的性质而产生的。

解决方案:std::fixed 操纵器

要显示浮点数的尾随零,您必须将 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 操纵器,代码现在可以正确打印 0.5000。 std::set precision() 操纵器仍然负责指定所需的小数位数。

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

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