Python的格式与十进制小数位数的最低数量(Python Format Decimal with

2019-09-18 10:59发布

我有一些Decimal在Python实例。 我想格式化,使得

Decimal('1')       => '1.00'
Decimal('12.0')    => '12.00'
Decimal('314.1')   => '314.10'
Decimal('314.151') => '314.151'

因此,确保总有至少两位小数,甚至更多。 虽然有解决方案,不乏为四舍五入至n小数我能找到确保对数的下限干脆利落的方式。

我目前的解决方案是计算:

first  = '{}'.format(d)
second = '{:.2f}'.format(d)

并采取其有史以来二是更长的时间。 然而,它似乎有点hackish的。

Answer 1:

如果你希望避免串的问题:

if d*100 - int(d*100):
    print str(d)
else:
    print ".2f" % d

未经测试的代码,但它应该工作。

这就像这样:

d = 12.345

时报100:

1234.5

少INT(1234.5)

1234.5 - 1234 = 0.5

0.5!= 0

这意味着,有3个以上的小数位。

打印STR(12.345)

即使你12.3405:

1234.05 - 1234 = 0.05

0.05!= 0

但如果你有12.3:

1230至1230年= 0

这意味着%.2f打印。



文章来源: Python Format Decimal with a minimum number of Decimal Places