当我尝试在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;

10-04 18:49