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

Cas*_*ash 51 python string python-3.x

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

Ale*_*lli 89

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

>>> n = 4
>>> p = math.pi
>>> '{0:.{1}f}'.format(p, n)
'3.1416'
Run Code Online (Sandbox Code Playgroud)

嵌套{1}采用第二个参数,n的当前值,并按指定应用它(此处,格式的"精度"部分 - 小数点后的位数),{0:.4f}然后应用外部结果.当然,你可以硬编码4,如果你希望(数字或任何号码),但关键的问题是,你不具备对!

更好......:

>>> '{number:.{digits}f}'.format(number=p, digits=n)
'3.1416'
Run Code Online (Sandbox Code Playgroud)

...而不是像上面的0和1那样模糊的"参数数字",你可以选择使用闪亮的参数名称,并将相应的值作为关键字(也称为" 命名 ")参数传递给format- 可以这样你看到的更具可读性!

  • @Casebash,不客气!我同意`format'方法远远优于老式的,基于C语言的`%` - 基于操作符的格式化 - 它们的功能大致相等,但``format`更加可用! - ) (2认同)

Don*_*ell 17

在Python 3.xa格式字符串中包含由括号指示的替换字段::

".... {0: format_spec} ....".format(value)
Run Code Online (Sandbox Code Playgroud)

格式规范具有一般布局:

[[fill]align][sign][pad][width][,][.precision][type]
Run Code Online (Sandbox Code Playgroud)

因此,例如,除了宽度,精度和类型代码之外的所有其他内容,十进制或浮点数可以格式化为:

>>>print("The value of pi is {0:10.7f} to 7 decimal places.".format(math.pi))
Run Code Online (Sandbox Code Playgroud)

这将打印为:

The value of pi is  3.1415927 to 7 decimal places.
Run Code Online (Sandbox Code Playgroud)


小智 17

基于 [Alex Martelli] 的解决方案但使用 Python 3.6.2 的更新答案及其更新的格式语法我建议:

>>> n=4
>>> p=math.pi
>>> f'{p:.{n}f}'
'3.1416'
Run Code Online (Sandbox Code Playgroud)

但是通过明智地选择您的变量,您的代码将成为自我记录的

>>> precision = 4
>>> pi = math.pi
>>> f'{pi:.{precision}f}'
'3.1416'
Run Code Online (Sandbox Code Playgroud)


Cas*_*ash 5

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

"{0:.{1}f}".format(x,n)
Run Code Online (Sandbox Code Playgroud)

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