本页总结Python、C和C++的格式化输出。
Python
使用
1
placeholder_str.format(value1, value2...)
进行字符串格式化。其中
placeholder_str
是包含{}
的字符串,{}
可以是空,下标值或参数名;value1
,value2...
可以是值,也可以是键值对。
示例
1
2
3
print("My name is {}, I'm {}".format("Zander", 25))
print("My name is {0}, I'm {1}".format("Zander", 25))
print("My name is {name}, I'm {age}".format(name="Zander", age=25))
其中第三行还有一种等效写法为
1
2
3
name = "Zander"
age = 25
print(f"My name is {name}, I'm {age}")
format()
还可用于数字的格式化(这里介绍了各种各样支持的format,以供查询),比如以下常用的:
示例
使用
:f
将数字转化为定点数1 2 3 4 5 6 7 8 9 10 11
# default with 6 decimals. print("The price is {:f} dollars.".format(45)) # The price is 45.000000 dollars. # use `:.<n>f` to specify the number of decimals print("The price is {:.2f} dollars.".format(45)) # The price is 45.000000 dollars. # use key=value and number format simultaneously print("The price is {price:.2f} dollars.".format(price=45)) # The price is 45.00 dollars.
C
使用printf()
进行格式化输出。这里介绍了各种各样支持的format,以供查询。
以下常用的:
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main() {
// print signed decimal integer
int x = 45;
printf("%d\n", x); // 45
// print float value
float f = 3.1416;
// the default number of digits to be printed after the decimal point is 6
printf("%f\n", f); // 3.141600
// use `%.<n>f` to specify the number of digits to be printed after the decimal point
printf("%.3f\n", f); // 3.142
// print string of characters
char str[] = "Hello World";
printf("%s\n", str); // Hello World
}
- 注:format和实际的数据类型务必对应,否则显示的数值妈都不认识。
C++
C++同样支持printf()
。但值得注意一些地方:
printf
输出C++的string?printf
不支持直接输出string,需要用.c_str()
进行转换
1 2
string a = "c++ string\n"; printf("%s", a.c_str());
另外C++还支持cout
,使用起来比较简单,这里介绍其常见用法。以下是一些值得注意的地方:
设定输出的精度:
setprecision(n)
控制输出的浮点数字的有效数字位数
1 2 3 4 5 6 7 8 9 10 11 12 13
#include <iostream> // std::cout, std::fixed #include <iomanip> // std::setprecision using namespace std; int main() { double number1 = 132.364, number2 = 26.91; double quotient = number1 / number2; // 4.91876625789669... cout << quotient << endl; // 4.91877, 默认显示6位有效数字 cout << setprecision(5) << quotient << endl; // 4.9188, 设定显示5位有效数字 cout << setprecision(4) << quotient << endl; // 4.919, 设定显示4位有效数字 return 0; }
如果一个数字的值可以由少于 setprecision 指定的精度位数来表示,则操作符将不起作用
1 2 3
double dollars = 24.51; cout << dollars << endl; // 24.51 cout << setprecision (5) << dollars << endl; // 24.51
配合
fixed
使用可实现控制小数点后n位1 2 3 4 5 6 7 8 9 10 11
#include <iostream> // std::cout, std::fixed #include <iomanip> // std::setprecision using namespace std; int main () { double f = 3.1415926; cout << setprecision(5) << f << '\n'; // 3.1416 cout << fixed << setprecision(5) << f << '\n'; // 3.14159 cout << fixed << setprecision(10) << f << '\n'; // 3.1415926000 return 0; }