Python-如何设置小数位格式以始终显示2个小数位?

发布于 2021-02-02 23:14:11

我要显示:

49 如 49.00

和:

54.9 如 54.90

不管小数点的长度或是否有小数位,我都希望显示一个Decimal带有2个小数位的a,并且我想以一种有效的方式做到这一点。目的是显示货币值。

例如, 4898489.00

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

    我想你可能正在使用模块中的Decimal()对象decimal?(如果你需要精确到小数点后两位任意大数的精度,则绝对应该如此,这就是你的问题标题所建议的……)

    如果是这样,则文档的“ 十进制常见问题解答”部分将包含一个问题/答案对,这可能对你有用:

    问:在具有两位小数位的定点应用程序中,某些输入有很多位,需要四舍五入。其他人不应有多余的数字,需要进行验证。应该使用什么方法?

    答:quantize()方法四舍五入到固定的小数位数。如果设置了不精确陷阱,则它对于验证也很有用:

    >>> TWOPLACES = Decimal(10) ** -2       # same as Decimal('0.01')
    >>> # Round to two places
    >>> Decimal('3.214').quantize(TWOPLACES)
    Decimal('3.21')
    >>> # Validate that a number does not exceed two places
    >>> Decimal('3.21').quantize(TWOPLACES, context=Context(traps=[Inexact]))
    Decimal('3.21')
    >>> Decimal('3.214').quantize(TWOPLACES, context=Context(traps=[Inexact]))
    Traceback (most recent call last):
       ...
    Inexact: None
    

    下一个问题是

    问:一旦有了有效的两个位置输入,如何在整个应用程序中保持不变?

    如果你需要答案(以及许多其他有用的信息),请参阅docs的上述部分。另外,如果你将Decimals的精度保持在小数点后两位(这意味着将所有数字保持在小数点的左边,而将所有数字保持在小数点的右边,则不再需要其他精度…),然后将它们转换为str可以正常工作:

    str(Decimal('10'))
    # -> '10'
    str(Decimal('10.00'))
    # -> '10.00'
    str(Decimal('10.000'))
    # -> '10.000'
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你应该使用新的格式规范来定义应如何表示值:

    >>> from math import pi  # pi ~ 3.141592653589793
    >>> '{0:.2f}'.format(pi)
    '3.14'
    

    该文档有时可能会有些晦涩,因此我建议你使用以下更容易阅读的参考文献:

    • 在Python字符串格式菜谱:显示了新样式的例子.format()字符串格式化
    • pyformat.info:比较旧式%字符串格式和新式.format()字符串格式
      Python 3.6引入了文字字符串插值(也称为f字符串),因此现在你可以将上面的文字更简洁地编写为:
    >>> f'{pi:.2f}'
    '3.14'
    


知识点
面圈网VIP题库

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

去下载看看