c语言篇
#include<stdio.h>
int main() {
double a = 12.345;
printf("1["); printf("%lf", a); printf("]\n");
printf("\n");
printf("2["); printf("%15lf", a); printf("]\n");
printf("3["); printf("%-15lf", a); printf("]\n");
printf("\n");
printf("4["); printf("%.2lf", a); printf("]\n");
printf("5["); printf("%15.2lf", a); printf("]\n");
}
c语言的格式化输出都是在printf()中操作。
字符char类型对应的是%c,整数int类型对应的是%d,单精度浮点数float类型对应的是%f,双精度浮点数double类型对应的是%lf 。
printf函数中double类型默认保留6位小数输出,如1所示。
设置宽度为15位,则是%15lf,如2所示。
左对齐输出则在前面添加负号,如3所示。
保留两位小数,则是%.2lf,如4所示。
再另外多举几个例子吧,%-12.3d表示,将整数int类型变量按宽度12位、保留3位小数,左对齐输出;%8.2f表示,将单精度浮点数float类型变量按宽度8位、保留2位小数输出(默认右对齐)。
c++篇
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
double a = 12.345;
cout << "1[" << a << "]" << endl;
cout << endl;
cout << "2[" << setw(10) << a << "]" << endl;
cout << "3[" << setw(10) << left << a << "]" << endl;
cout << endl;
cout << "4[" << setw(3) << a << "]" << endl;
cout << "5[" << setprecision(3) << a << "]" << endl;
cout << "6[" << setprecision(10) << a << "]" << endl;
cout << endl;
cout<< "7[" <<fixed << setprecision(2) << a << "]" << endl;
cout << "8[" << setw(10) << fixed << setprecision(2) << left << a << "]" << endl;
}
首先,c++需要包含头文件iomanip;
setw()用来设置宽度,默认是右对齐,如2所示;加上left后可以变成左对齐。
setprecision()单用的话是确定输出位数,它和setw()不同在于,若宽度设置小于变量的宽度,setw()会无效,而setprecision()会截取,如4和5所示;若宽度设置大于变量的宽度,setprecisition()会无效,如2和6所示。
setprecition()一般和fixed相结合使用,用来控制保留几位小数,如7所示。
详细可看以下文章
C++ 格式化输出(前置补0,有效位数,保留小数,上下取整,四舍五入)
(by 归忆)