我在Python中有一些Decimal
个实例。我想格式化它们
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。
答案 0 :(得分: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个或更多小数位。
print str(12.345)
即使你做了12.3405:
1234.05 - 1234 = .05
.05!= 0
但如果你有12.3:
1230 - 1230 = 0
这意味着使用%.2f进行打印。