购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

| 1.2 |

数字格式化输出

在项目应用中,我们有时需要将数字格式化后输出,并希望能对数字的位数、对齐、千分符等进行控制。

格式化输出单个数字可以直接使用f前缀,示例(number_format.py)如下:


x = 1234.56789
print(f'0.2f format {x}: {x:0.2f}')
print(f'>10.1f format {x}: {x: >10.1f}')
print(f'<10.1f format {x}: {x: <10.1f}')
print(f'^10.1f format {x}: {x: ^10.1f}')
print(f', format {x}: {x: ,}')
print(f'0,.1f format {x}: {x: 0,.1f}')

执行py文件,输出结果如下:


0.2f format 1234.56789: 1234.57
>10.1f format 1234.56789:     1234.6
<10.1f format 1234.56789: 1234.6    
^10.1f format 1234.56789:   1234.6  
, format 1234.56789:  1,234.56789
0,.1f format 1234.56789:  1,234.6

如果想使用指数记法,可将前缀f改成e或者E(取决于指数输出的大小写形式),示例(number_format.py)如下:


print(f'e format {x} is: {x: e}')
print(f'0.2E format {x} is: {x: 0.2E}')

执行py文件,输出结果如下:


e format 1234.56789 is:  1.234568e+03
0.2E format 1234.56789 is:  1.23E+03

指定宽度和精度的一般形式是'[<>^]?width[,]?(.digits)?',其中width和digits为整数,?代表可选部分。同样的格式可被用在字符串的format()方法中,输出(number_format.py)如下:


print(f'The value is {x: 0,.2f}')

数字格式化输出通常是比较简单的。该技术同时适用于浮点数和decimal模块中的Decimal数字对象。

当指定数字的位数后,利用round()函数对结果值进行四舍五入后再返回。示例(number_format.py)如下:


print(f'x format: {x: 0.1f}')
print(f'-x format: {-x: 0.1f}')

执行py文件,输出结果如下:


x format:  1234.6
-x format: -1234.6

包含千分符的格式化与本地化没有关系。如果需要根据地区来显示千分符,则需要自己去调用locale模块中的函数。我们可以使用translate()方法来交换千分符,示例(number_format.py)如下:


swap_separators = { ord('.'):',', ord(','):'.' }
print(format(x, ',').translate(swap_separators))

执行py文件,输出结果如下: OImb7hy2lA9AvP9aMQSptQOvozwmGU/4J8i5TLEBfJLzuNJ3n7L3SrJjDV57QBlY


1.234,56789

点击中间区域
呼出菜单
上一章
目录
下一章
×