1

我目前有一个函数,它接受一个结构向量,包括所有浮点数,并且应该在一个简单的计算后返回一些值。

我的 cout 功能很简单

void taxPrint(std::vector<TaxPayer> &citizen)
{
    int loops = 0;

    std::cout << "\nTaxes due for this year: \n" << std::endl;

    do
    {
        std::cout << "Tax Payer #" << loops << " : $" << citizen[loops].taxes << std::endl;
        loops++;
}
while (loops + 1 <= SIZE);

并且控制台中的结果输出是

Tax Payer #0 : $450000
Tax Payer #1 : $210000

也就是说,我希望它是

Tax Payer #0 : $4500.00
Tax Payer #1 : $2100.00

我一直在搞乱 setw() 和 setprecision() 但我并不完全了解它们是如何工作的。

4

1 回答 1

0

std::setw,实际上与值精度无关,它用于填充带有前缀的字符串,例如:(填充)001-0123-91240

示例: std::cout << std::setfill('0') << std::setw(5) << 5 << std::endl;将打印00005

以下是如何使用std::fixedand来使用它std::setprecision

void taxPrint(std::vector<TaxPayer> &citizen)
{
    int loops = 0;

    std::cout << "\nTaxes due for this year: \n" << std::endl;

    do
    {
        std::cout << "Tax Payer #" << loops << " : $" << std::setprecision(2) 
                  << std::fixed << citizen[loops].taxes / 100. << std::endl;
        loops++;
    }
    while (loops + 1 <= SIZE);
} // Don't miss this bracket!

另外,请查看问题以了解有关为值指定固定精度的更多信息...

于 2019-02-02T03:25:21.923 回答