Python格式十进制,具有最小数量的小数位数

Fre*_*den 5 python format decimal

Decimal在Python中有一些实例.我希望将它们格式化

Decimal('1')       => '1.00'
Decimal('12.0')    => '12.00'
Decimal('314.1')   => '314.10'
Decimal('314.151') => '314.151'
Run Code Online (Sandbox Code Playgroud)

因此确保总是至少有两个小数位,可能更多.虽然不存在舍入到n小数位的解决方案,但我找不到确定数字下限的简洁方法.

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

first  = '{}'.format(d)
second = '{:.2f}'.format(d)
Run Code Online (Sandbox Code Playgroud)

并采取两者中的哪一个更长.然而,它看起来有点hackish.

C0d*_*ker 3

如果您想避免字符串问题:

if d*100 - int(d*100):
    print str(d)
else:
    print ".2f" % d
Run Code Online (Sandbox Code Playgroud)

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

这工作起来就像这样:

d = 12.345

乘以100:

1234.5

减去整数(1234.5)

1234.5 - 1234 = .5

.5!= 0

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

打印字符串(12.345)

即使您执行 12.3405:

1234.05 - 1234 = .05

.05!= 0

但如果你有 12.3:

1230 - 1230 = 0

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