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

发布于 2021-01-29 14:58:05

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)

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

关注者
0
被浏览
68
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    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打印。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看