当我尝试在C++中使用setprecision(2)对数字进行四舍五入时,将返回“0.093”之类的数字-三,而不是小数点后两位。我不知道为什么会这样。如果我严重遗漏了一些要点,我在下面包括了我的基本代码。谢谢!
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double tax = 0.06 ; //Tax Rate
float cost ; //Cost of item
float computed ; //Non-rounded tax
cout << "Enter the cost of the item: " ;
cin >> cost ;
computed = tax*cost;
cout << "Computed: $" << computed << endl;
cout << "Charged: $" << setprecision(2) << computed << endl; //Computed tax rounded to 2 decimal places
return 0;
}
最佳答案
这是因为std::setprecision
不会将小数点后的位数设置为位数,而是将有效位数(即“有意义的”)位数(如果不将浮点格式更改为在小数点后使用固定位数的位数)。要更改格式,必须将 std::fixed
(documentaion)放入输出流中:
cout << "Charged: $" << fixed << setprecision(2) << computed << endl;