我想要显示:
49 as 49.00
and:
54.9和54.90
无论小数点的长度或是否有任何小数点,我想显示一个小数点后2位的小数,我想以一种有效的方式做到这一点。目的是展示货币价值。
例如,4898489.00
有关内置浮点类型的类似问题,请参阅将浮点数限制为两个小数点。
我想要显示:
49 as 49.00
and:
54.9和54.90
无论小数点的长度或是否有任何小数点,我想显示一个小数点后2位的小数,我想以一种有效的方式做到这一点。目的是展示货币价值。
例如,4898489.00
有关内置浮点类型的类似问题,请参阅将浮点数限制为两个小数点。
当前回答
最简单的例子是:
代码:
>>>分= 19.5分 >>> total = 22 >>>'正确答案:{:.2%}'.format(分数/总分) `
输出:正确答案:88.64%
其他回答
如果你用这个来表示货币,并且还想用's来分隔值,你可以使用's
$ {:, .f2} .format (currency_value)。
例如:
Currency_value = 1234.50
$ {:,.f2}.format(currency_value)——> $ 1,234.50
下面是我不久前写的一段代码:
print(">在年底" + year_string + " total paid is \t$ {:,.2f}".format(total_paid))
> At the end of year 1 total paid is $ 43,806.36
> At the end of year 2 total paid is $ 87,612.72
> At the end of year 3 total paid is $ 131,419.08
> At the end of year 4 total paid is $ 175,225.44
> At the end of year 5 total paid is $ 219,031.80 <-- Note .80 and not .8
> At the end of year 6 total paid is $ 262,838.16
> At the end of year 7 total paid is $ 306,644.52
> At the end of year 8 total paid is $ 350,450.88
> At the end of year 9 total paid is $ 394,257.24
> At the end of year 10 total paid is $ 438,063.60 <-- Note .60 and not .6
> At the end of year 11 total paid is $ 481,869.96
> At the end of year 12 total paid is $ 525,676.32
> At the end of year 13 total paid is $ 569,482.68
> At the end of year 14 total paid is $ 613,289.04
> At the end of year 15 total paid is $ 657,095.40 <-- Note .40 and not .4
> At the end of year 16 total paid is $ 700,901.76
> At the end of year 17 total paid is $ 744,708.12
> At the end of year 18 total paid is $ 788,514.48
> At the end of year 19 total paid is $ 832,320.84
> At the end of year 20 total paid is $ 876,127.20 <-- Note .20 and not .2
OP总是希望显示两个小数点后的位置,因此像所有其他答案所做的那样,显式地调用格式化函数是不够的。
正如其他人已经指出的那样,Decimal适用于货币。但是Decimal显示了所有的小数点。因此,重写它的显示格式化器:
class D(decimal.Decimal):
def __str__(self):
return f'{self:.2f}'
用法:
>>> cash = D(300000.991)
>>> print(cash)
300000.99
简单。
编辑:
显示小数点后至少两位,但不截断有效数字:
class D(decimal.Decimal):
def __str__(self):
"""Display at least two decimal places."""
result = str(self)
i = result.find('.')
if i == -1:
# No '.' in self. Pad with '.00'.
result += '.00'
elif len(result[i:]) == 2:
# One digit after the decimal place. Pad with a '0'.
result += '0'
return result
我希望Python的未来版本将改进数字格式,以允许最小的小数位数。类似于Excel数字格式中的#符号。
这与你可能已经看到的解决方案是一样的,但是这样做会更清楚:
>>> num = 3.141592654
>>> print(f“Number: {num:.2f}”)
.format是一种可读性更好的处理变量格式化的方式:
'{:.{prec}f}'.format(26.034, prec=2)
是什么
print round(20.2564567 , 2) >>>>>>> 20.25
print round(20.2564567 , 4) >>>>>>> 20.2564