Python格式的小数,小数位数最小

Python格式的小数,小数位数最小,python,format,decimal,Python,Format,Decimal,我有一些Python中的Decimal实例。我希望将其格式设置为: Decimal('1') => '1.00' Decimal('12.0') => '12.00' Decimal('314.1') => '314.10' Decimal('314.151') => '314.151' 因此,确保始终至少有两位小数,可能更多。虽然不缺少四舍五入到小数位数的解决方案,但我找不到确保数字下限的简洁方法 我目前的解决方案是计算: first = '{

我有一些Python中的
Decimal
实例。我希望将其格式设置为:

Decimal('1')       => '1.00'
Decimal('12.0')    => '12.00'
Decimal('314.1')   => '314.10'
Decimal('314.151') => '314.151'
因此,确保始终至少有两位小数,可能更多。虽然不缺少四舍五入到小数位数的解决方案,但我找不到确保数字下限的简洁方法

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

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

两个中哪一个更长。但是,它似乎有些粗糙。

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

if d*100 - int(d*100):
    print str(d)
else:
    print ".2f" % d
未经测试的代码,但它应该可以工作

这是这样的:

d=12.345

乘以100:

1234.5

减去整数(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.

打印对我来说很好。您可以执行
max((第一,第二),key=len)
。我假设您指的是十进制(float)而不是十进制(string)。不管是哪种方式,您都可以像类“from Decimal import Decimal”中那样对string.Decimal调用float(),这与浮点数非常不同。明白了。我不知道那件事。我的答案仍然有效吗?