C++程序打印值到指定格式
假设我们得到三个双精度浮点数。我们需要对它们进行格式化,并按照以下格式打印。
我们需要以十六进制格式(使用小写字母)打印第一个值的整数部分。
我们需要打印第二个值,保留两位小数,并在其前面加上符号以表示其正负。第二个值需要右对齐,宽度为15个字符,左侧未使用的位置用下划线填充。
我们需要以科学计数法打印第三个值,保留九位小数。
因此,如果输入为 256.367、5783.489、12.5643295643,则输出将为
0x100 _______+5783.49 1.256432956E+01
为了解决这个问题,我们将遵循以下步骤:
hex 标记以十六进制格式打印值,showbase 标记显示十六进制值的“0x”前缀,left 标记通过在值的右侧插入填充字符来将值填充到输出字段,nouppercase 标记以全部小写字母打印输出。
right 标记通过在值的左侧插入填充字符来将值填充到输出字段,fixed 标记以定点表示法打印值,set(15) 将输出字段长度设置为 15,showpos 标记在输出前面插入“+”符号,setfill('_') 用下划线填充输出,setprecision() 将值的精度设置为最多两位小数。
setprecision() 将值的精度设置为最多九位小数,scientific 标记以科学计数法打印值,uppercase 使输出值全部大写,noshowpos 省略输出值前面的任何正号。
让我们看看以下实现以更好地理解:
#include <iostream>
#include <iomanip>
using namespace std;
void solve(double a, double b, double c) {
cout << hex << showbase << nouppercase << left << (long long) a << endl;
cout << right << fixed << setw(15) << setfill('_') << setprecision(2) << showpos << b << endl;
cout << setprecision(9) << scientific << uppercase << noshowpos << c << endl;
}
int main() {
solve(256.367, 5783.489, 12.5643295643);
return 0;
}输入
256.367, 5783.489, 12.5643295643
输出
0x100 _______+5783.49 1.256432956E+01
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP