9

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)

并取两者中较长的一个。但是,它似乎有些骇人听闻。

4

1 回答 1

2

如果您希望避免字符串问题:

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 = .5

.5 != 0

这意味着有 3 位或更多小数位。

打印 str(12.345)

即使您执行 12.3405:

1234.05 - 1234 = .05

.05 != 0

但是如果你有 12.3:

1230 - 1230 = 0

这意味着使用 %.2f 打印。

于 2012-06-24T22:10:16.017 回答