python format格式化数字

本文主要讲解python中format函数如何格式化数字,如千分位、百分比、保留指定小数位、进制转换等等。

本文只讲解format与数字相关的用法,其他用法可参考本人写的其他文章。

一、format数字格式化语法

1.1、语法格式

str.format()str是指字符串实例对象,常用格式为:''.format()

1.2、参数格式

更多内容参考官网地址:https://docs.python.org/zh-cn/3/library/string.html#formatspec

'{[index][:[fill]align][sign][#][width][grouping_option][.precision][type]}{......}{......}'.format(),格式中[]内的参数都是可选参数,每个{}都表示是一个待替换的字符串。

index:指定冒号后面出现的参数在format()中的索引值,如果没有,则以format()中的默认顺序自动分配。

fill:指定空白处的填充符,默认是空格,可以是任意单个字符

align:指定数字的对齐方式。

align含义
<左对齐,对于大部分对象时为默认
>右对齐,对于数字时为默认
=数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效
^数据居中,此选项需和 width 参数一起使用

请注意,除非定义了最小字段宽度,否则字段宽度将始终与填充它的数据大小相同,因此在这种情况下,对齐选项没有意义。

sign:指定有无符号数 。

sign含义
+正数前面添加 ‘ + ’ ,负数前面加 ‘ - ’ 例如 +3 , -1 。
-表示正负号仅用于负数(这是默认行为)。正数前面不添加 ‘ + ’ ,负数前面加 ‘ - ’。例如 3 , -1。
space正数前面添加 ‘ 空格 ’ ,负数前面加 ‘ - ’
#对于二进制数、八进制数和十六进制数,使用此参数,各进制数前会分别显示 0b、0o、0x前缀;反之则不显示前缀

width:指定输出数据时所占的宽度。

grouping_option :千分位分隔符,一般为"_" 或 “,” 。

.precision:如果后面存在type参数,则指的是保留小数的位数,如果type参数不存在,则是指有效数字的位数。

type:指定输出数据的具体类型。

type含义
s对字符串类型格式化,这是字符串的默认类型,可以省略。
%显示百分比,默认显示小数点后六位,将数字乘以 100 后面带一个百分号。
d十进制整数
c将十进制整数自动转化成对应的Unicode字符
b将十进制数自动转化成二进制数,并格式化输出
o将十进制数自动转化成八进制数,并格式化输出
x十六进制数,a 到 f 小写
X十六进制数,A 到 F 大写。 在指定 ‘#’ 的情况下,前缀 ‘0x’ 也将被转为大写形式 ‘0X’。
e转化成科学计数法,并格式化输出
E科学计数法。 与 ‘e’ 相似,不同之处在于它使用大写字母 ‘E’ 作为分隔字符。
f转化为浮点数,对 float 采用小数点之后 6 位精度,而对 Decimal 则使用大到足够显示所有系数位的精度。
F定点表示。 与 ‘f’ 相似,但会将 nan 转为 NAN 并将 inf 转为 INF。
g、G自适应转化为e或f(E或F),并格式化输出

二、基本用法

2.1、进制转换

N = 299
print('{:b}'.format(N))
print('{:c}'.format(N))
print('{:d}'.format(N))
print('{:o}'.format(N))
print('{:x}'.format(N))
print('{:X}'.format(N))

#十进制转化为二进制
print("二进制转化:{:#b}".format(16))               #二进制转化:0b10000
 
#十进制转化为八进制
print("八进制转化:{:#o}".format(16))               #八进制转化:0o20

#输出内容:
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test3.py 
100101011
ī
299
453
12b
12B

2.2、百分比、千分位

#百分比
print('{:%}'.format(0.25)) #输出:25.000000%

#千分位
print('{:,}'.format(180000)) #输出:180,000
 print('{:,.2f}'.format(12000)) # 12,000.00

2.3、精度、保留小数位

Format中的限定符有更丰富的格式,通过{:}来表示

精度:指定小数点后面保留多少位如果是字符串,则是取长度:号后面设置精度(以.开始加上精度),然后用f结束,若不是设置,默认为精度为6,自动四舍五入,可带符号显示数字正负标志。

print('{:.2f}'.format(3.1415926))
print('{:.4}'.format(u'我是小明,爱好旅游'))
print('{:+.2f}'.format(99.1234567))  # 输出 +99.12 
print('{:-.2f}'.format(+99.1234567))  # 输出 99.12   
print('{:0=+10}'.format(99)) # 右对齐,10位数,不够0填充,同时在数字前面添加正负符号

# 输出
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test3.py 
3.14
我是小明
+99.12
99.12  
+000000099

2.4、填充与对齐

填充对齐:用^、<、>分别是居中、左对齐、右对齐,符号前表示要填充的字符,符号后表示要填充的长度

print('{:0<10}'.format(18))  # 左对齐,10位数,不够用0填充
print('{:0>10}'.format(18))  # 右对齐,10位数,不够用0填充
print('{:0^10}'.format(18))  # 中间对齐,10位数,不够用0填充
print('{:0=+10}'.format(99)) # 右对齐,10位数,不够0填充,同时在数字前面添加正负符号

#输出:
1800000000
0000000018
0000180000
+000000099

2.5、数字:正负号显示

print("{:f} & {:f}".format(12.12, -12.12)) # 12.120000 & -12.120000

print("{:+f} & {:+f}".format(12.12, -12.12)) # +12.120000 & -12.120000

print("{:-f} & {:-f}".format(12.12, -12.12)) # 12.120000 & -12.120000



参考或推荐文章:
python format官网地址:https://docs.python.org/zh-cn/3/library/functions.html#format

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月天的尾巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值