此 C++ 程序中使用的 setprecision() 的目的是什么?

What is the purpose of the setprecision() used in this C++ program?

提问人:whatsanoven 提问时间:2/10/2023 更新时间:2/12/2023 访问量:138

问:

创建此示例程序的唯一目的是展示 setprecision 和 setw 的作用。我不明白第三行说“setprecision(5)”的目的。我注释了这条线以查看差异,但它看起来完全相同。难道就没有目的了吗?

 cout << "\nSales Figures\n";
 cout << "-------------\n";
 cout << setprecision(5);
 cout << "Day 1: " << setw(8) << day1 << endl;
 cout << "Day 2: " << setw(8) << day2 << endl;
 cout << "Day 3: " << setw(8) << day3 << endl;
 cout << "Total: " << setw(8) << total << endl;
C++ 格式化 iomanip

评论

2赞 drescherjm 2/10/2023
尝试将值更改为 或cout << setprecision(2);cout << setprecision(10);
1赞 drescherjm 2/10/2023
另请阅读此文档并查看示例程序:https://en.cppreference.com/w/cpp/io/manip/setprecision
2赞 BoP 2/10/2023
你的变量是浮点数,对吧?精度不影响整数。
1赞 Eljay 2/10/2023
什么?什么?什么?什么?一个最小的可重复的例子会有所帮助。day1day2day3total
0赞 whatsanoven 2/10/2023
谢谢你们!我没有意识到该程序要求每天的销售额,所以我只是输入整数而不是浮点数。

答:

1赞 Ethan N 2/10/2023 #1

该函数是“iomanip”库的一部分,当您需要将浮点数输出到一定数量的小数位时使用。这适用于显示货币金额和其他通常在小数点后以固定数字显示的内容(即使这些数字为 0)。setprecision()

假设您有一个名为 price 的浮点数:如果您在该浮点数中存储了 10.0,则当您打印到屏幕中时,C++ 将不知道要输出多少个小数点; 将使输出 10.00。setprecision(2)

您可以在以下链接中找到文档:https://cplusplus.com/reference/iomanip/setprecision/

它包括以下代码作为工作原理的示例。setprecision()

// setprecision example
#include <iostream>     // std::cout, std::fixed
#include <iomanip>      // std::setprecision

int main () {
  double f =3.14159;
  std::cout << std::setprecision(5) << f << '\n'; // This outputs 3.1415
  std::cout << std::setprecision(9) << f << '\n'; // This outputs 3.14159
  std::cout << std::fixed; 
  std::cout << std::setprecision(5) << f << '\n'; // This outputs 3.14159
  std::cout << std::setprecision(9) << f << '\n'; // This outputs 3.141590000
  return 0;
}

请注意,setprecision() 仅适用于带有小数点的数据类型,例如浮点数和双精度值。