这是编写此格式化函数的一种简洁方法:
def percent(value,digits=0):
return ('{0:.%d%%}' % digits).format(value)
>>> percent(0.1565)
'16%'
>>> percent(0.1565,2)
'15.65%'
问题是用给定的位数格式化一个数字,我不喜欢同时使用 '%' 运算符和格式方法。
这是编写此格式化函数的一种简洁方法:
def percent(value,digits=0):
return ('{0:.%d%%}' % digits).format(value)
>>> percent(0.1565)
'16%'
>>> percent(0.1565,2)
'15.65%'
问题是用给定的位数格式化一个数字,我不喜欢同时使用 '%' 运算符和格式方法。
我喜欢这个:
'{0:.{1}%}'.format(value, digits)
测试:
>> '{0:.{1}%}'.format(0.1565, 0)
'16%'
>> '{0:.{1}%}'.format(0.1565, 2)
'15.65%'
*
做你想要的,用于printf
-style 字符串格式。
>>> def percent(value, digits=0):
... return '%.*f%%' % (digits, value * 100)
...
>>> percent(0.1565, 2)
'15.65%'
高级字符串格式化(在PEP 3101中定义并在7.1.3. Format String Syntax中记录)似乎无法一次性完成。(见7.1.3.1. 格式规范 Mini-Language :precision
是integer
唯一的。)
从文档:
最小字段宽度(可选)。如果指定为“*”(星号),则从值中元组的下一个元素读取实际宽度,并且要转换的对象位于最小字段宽度和可选精度之后。
例子:
def percent(value, digits=0):
print '%.*f%%' % (digits, value*100)
>>> percent(0.1565, 2)
15.65%