一尘不染

Python格式的十进制数,最少的小数位数

python

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)

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


阅读 207

收藏
2021-01-20

共1个答案

一尘不染

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

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

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

这是这样的:

d = 12.345

100倍

1234.5

负整数(1234.5)

1234.5-1234 = 0.5

.5!= 0

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

打印str(12.345)

即使您执行12.3405:

1234.05-1234 = .05

.05!= 0

但是如果您有12.3:

1230-1230 = 0

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

2021-01-20