C ++将0.00转换为00.00

时间:2017-03-25 05:04:34

标签: c++

我无法将输出组织到项目的控制台中。所以我编写了一个函数来向字符串添加空格以正确格式化它。现在我遇到麻烦,0不是小数点前的正确长度,它打破了格式。如何将0.00更改为00.00?这是我目前的职能:

void organize(string n[], double tstData[][COLUMN])
{
    int j = 0;
    string spaces[12] = {" ","  ","   ","    ","     ","      ","       ","        ","         ","          ","           ","            "};

    string holder = "";

    for (int i = 0; i < 40; i++) {
        if (n[i].size() < 17) { 
            j = 17 - n[i].size();   
            j = j - 1;
            holder = n[i];
            holder = holder + spaces[j];
            n[i] = holder;  
        }

        for (j = 0; j < 4; j++) {
            if (tstData[i][j] == 0.00) {
                tstData[i][j] = 00;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

大多数编程语言都不存储设置变量时提供的确切数字。相反,他们将您提供的数字转换为该数字的二进制表示。打印数字时,它将转换为字符串。将数字转换为字符串的方法无法知道如何设置值或设置数字时提供的位数。数字相同的任何两个数字将以相同的方式打印。

如果您想确保在小数位前至少有两位数,请尝试:

if(tstData[i][j]) < 10) cout << "0";
cout << tstData[i][j] << endl;

答案 1 :(得分:1)

我强烈建议您使用#include <iomanip>,以及setfill()setw()setprecision()

setfill('0')表示您希望未使用的部分用0填充

setw(4)表示格式的宽度(0000)

最后,使用setprecision(2)设置格式(00.00)的精度