需要帮助格式化输出C ++

时间:2015-01-07 18:39:30

标签: c++

我显示分区表的功能正在运行,但我想格式化输出以允许小数点前面的任意数字,但将后面的小数位数限制为2.这是我正在使用的代码。一旦我添加了行cout.setf(std::ios::fixed, std::ios::floatfield),我的数据似乎格式正确,但我在实际数字的前面附加了额外的数字。 因此,程序不是打印1.00,而是打印40981.00,并为所有结果执行此操作。 (前面的数字确实变为4102x.xx)x是所需的输出。

void print_div_values(mult_div_values ** table, float x, float y){

cout << endl << "Here is the division table: " << endl;

for (int i = 1; i <= y; i++)        
{
    cout << endl;

    for (int j = 1; j <= x; j++)    
    {
        cout << std::setw(5) << cout.setf(std::ios::fixed, std::ios::floatfield) << std::setprecision(2) << table[i][j].div;        
    }
    cout << endl;
}

picture

1 个答案:

答案 0 :(得分:5)

std::ostream::setf返回旧标志,然后按cout格式化为整数。使用

cout.setf(std::ios::fixed, std::ios::floatfield);
cout << std::setw(5) << std::setprecision(2) << table[i][j].div;