使用新的Python格式函数舍入小数

时间:2009-10-21 03:27:10

标签: python string python-3.x

如何使用Python 3.0 format函数将小数舍入到特定数量的小数位?

5 个答案:

答案 0 :(得分:83)

这是一个典型的,有用的例子......:

>>> 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那样模糊的“参数数字”,你可以选择使用闪亮的参数名称,并将相应的值作为关键字<传递/ em>(又名“名为”)format的参数 - 可以如此更具可读性,如您所见!!! \ n \ t

答案 1 :(得分:13)

在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.

答案 2 :(得分:3)

要将x舍入到n位小数,请使用:

"{0:.{1}f}".format(x,n)

其中0和1分别代表str.format()方法的第一个和第二个参数。

答案 3 :(得分:2)

基于[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'

答案 4 :(得分:1)

我刚刚发现可以将{0}{digits}表示法结合起来。当您想要将所有变量舍入到预先指定的小数且带有1个声明时,这一点尤其有用:

sName = 'Nander'
fFirstFloat = 1.12345
fSecondFloat = 2.34567
fThirdFloat = 34.5678
dNumDecimals = 2

print( '{0} found the following floats: {1:.{digits}f}, {2:.{digits}f}, {3:.{digits}f}'.format(sName, fFirstFloat, fSecondFloat, fThirdFloat, digits=dNumDecimals))
# Nander found the following floats: 1.12, 2.35, 34.57