如何将控制台输出对齐到小数点而不是左对齐或右对齐
How to align the console output to decimal point instead of left or right
我正在尝试将 C++ 中的控制台输出对齐到小数点。我尝试了 setw
、precision
选项和其他与 right
或 left
对齐的标志。
但其中 none 的效果令人满意。
最接近的选择是使用 showpos
打印正数的 (+) 符号,但它会干扰其他格式,例如“TE_1_0”到“TE_+1_+0”。 =16=]
1.000000 -0.000000 0.000000
-0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
最好将其对齐到小数点以将输出呈现给感兴趣的人。因此,我们将不胜感激任何帮助。
您可以使用 setw
、setfill
、fixed
和 setprecesion
的组合来执行此操作,如下所示:
#include <iostream>
#include <vector>
#include <iomanip>
int main()
{
std::vector<std::vector<double>> vec{{10.0233, 122.1, 1203.1},{100.03, 22.15, 3.01},{107.03, 152.1, 0.1},};
for(std::vector<double> tempVec: vec)
{
for(double elem: tempVec)
{
std::cout << std::setw(8) << std::setfill(' ') << std::fixed << std::setprecision(3) << elem << " ";
}
std::cout<< std::endl;
}
return 0;
}
上面的输出是:
10.023 122.100 1203.100
100.030 22.150 3.010
107.030 152.100 0.100
如果将上面的例子稍微修改如下:
std::cout << std::setw(12) << std::setfill(' ') << std::fixed << std::setprecision(6) << elem << " ";
则输出变为:
10.023300 122.100000 1203.100000
100.030000 22.150000 3.010000
107.030000 152.100000 0.100000
setw
用于设置输出的最大长度,在我给出的例子中是8和12。
setfill
用于用 char
.
填充填充位置
我正在尝试将 C++ 中的控制台输出对齐到小数点。我尝试了 setw
、precision
选项和其他与 right
或 left
对齐的标志。
但其中 none 的效果令人满意。
最接近的选择是使用 showpos
打印正数的 (+) 符号,但它会干扰其他格式,例如“TE_1_0”到“TE_+1_+0”。 =16=]
1.000000 -0.000000 0.000000
-0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
最好将其对齐到小数点以将输出呈现给感兴趣的人。因此,我们将不胜感激任何帮助。
您可以使用 setw
、setfill
、fixed
和 setprecesion
的组合来执行此操作,如下所示:
#include <iostream>
#include <vector>
#include <iomanip>
int main()
{
std::vector<std::vector<double>> vec{{10.0233, 122.1, 1203.1},{100.03, 22.15, 3.01},{107.03, 152.1, 0.1},};
for(std::vector<double> tempVec: vec)
{
for(double elem: tempVec)
{
std::cout << std::setw(8) << std::setfill(' ') << std::fixed << std::setprecision(3) << elem << " ";
}
std::cout<< std::endl;
}
return 0;
}
上面的输出是:
10.023 122.100 1203.100
100.030 22.150 3.010
107.030 152.100 0.100
如果将上面的例子稍微修改如下:
std::cout << std::setw(12) << std::setfill(' ') << std::fixed << std::setprecision(6) << elem << " ";
则输出变为:
10.023300 122.100000 1203.100000
100.030000 22.150000 3.010000
107.030000 152.100000 0.100000
setw
用于设置输出的最大长度,在我给出的例子中是8和12。
setfill
用于用 char
.