使用新的Python格式函数对小数进行四舍五入
我想知道怎么用Python 3.0的format
函数把小数四舍五入到特定的小数位数。
5 个回答
24
在Python 3.x中,格式字符串包含用大括号表示的替换字段,像这样:
".... {0: format_spec} ....".format(value)
格式说明符的一般布局是:
[[fill]align][sign][pad][width][,][.precision][type]
所以,比如说只保留宽度、精度和类型代码,一个十进制或浮点数可以格式化成:
>>>print("The value of pi is {0:10.7f} to 7 decimal places.".format(math.pi))
这样打印出来会是:
The value of pi is 3.1415927 to 7 decimal places.
29
这是一个基于 [Alex Martelli] 的解决方案的更新回答,使用的是 Python 3.6.2 版本和它更新的格式语法。我建议使用以下代码:
>>> n=4
>>> p=math.pi
>>> f'{p:.{n}f}'
'3.1416'
不过,如果你明智地选择变量名,你的代码就会变得自我说明,也就是说,别人看你的代码时能更容易理解它的意思。
>>> precision = 4
>>> pi = math.pi
>>> f'{pi:.{precision}f}'
'3.1416'
124
这里有一个典型且实用的例子...:
>>> n = 4
>>> p = math.pi
>>> '{0:.{1}f}'.format(p, n)
'3.1416'
里面的 {1}
是用来获取第二个参数,也就是当前的 n 值,然后按照指定的方式应用它(在这里是格式中的“精度”部分——小数点后面的位数),外面的 {0:.4f}
则会应用这个结果。当然,如果你愿意,可以直接写死 4
(或者其他你想要的位数),但关键是,你不一定要这样做!
更棒的是...:
>>> '{number:.{digits}f}'.format(number=p, digits=n)
'3.1416'
...与上面模糊的“参数数字”比如 0 和 1 相比,你可以选择使用清晰明了的参数 名称,并将相应的值作为 关键字(也叫“命名”)参数传递给 format
—— 这样会让代码更易读,正如你所看到的!!!