假设浮点数x = 3.1234。我想在x的左侧和右侧包含空格的字符串中间打印此数字。字符串长度是可变的。 x的精度是可变的。如果字符串长度= 10且精度= 2,则输出将为" 3.14 "
在python中有任何可以返回此功能的函数吗?
答案 0 :(得分:1)
在https://docs.python.org/3.6/library/string.html#format-specification-mini-language
中记录得非常好但是因为你显然没有时间去谷歌:
>>> x = 3.1234
>>> length=10
>>> precision=2
>>> f"{x:^{length}.{precision}}"
' 3.1 '
我担心 precision 的概念与默认情况下的Python不一致。您可以通过指定f
ixed点格式而不是默认的g
常规格式来修复它:
>>> f"{x:^{length}.{precision}f}"
' 3.12 '
这种表示法比调用方法str.format()
更明显。但是在Python 3.5及更早版本中,您需要这样做:
>>> "{x:^{length}.{precision}f}".format(x=x, length=length, precision=precision)
但是没有任何摆弄这种格式的东西会让3.1234成为3.14。我怀疑这是一个错误的问题,但如果你真的是这个意思,那么在格式化它之前别无选择,只能调整x
的值。这是一种方法:
>>> from decimal import *
>>> (Decimal(x) / Decimal ('0.02')).quantize(Decimal('1'), rounding=ROUND_UP) * Decimal('0.02')
Decimal('3.14')
这会将您的数字划分为大小为0.02的整数块,在必要时向上舍入,然后再次乘以0.02以获得所需的值。