在python中以十进制数字显示尾随零而不返回字符串

Posted

技术标签:

【中文标题】在python中以十进制数字显示尾随零而不返回字符串【英文标题】:Display trailing zeros in a decimal number in python without returning a string 【发布时间】:2017-02-23 06:54:11 【问题描述】:

我需要在十进制数中显示尾随零。我曾考虑使用python format(),但它返回一个字符串,当我将其转换为浮点数或小数时,尾随零消失。 p>

我也尝试过使用python decimal,但它在变量赋值时返回一个十进制实例。 例如:

>>> x = decimal.Decimal(format(15.2, '.2f'))
>>> print x
15.20
>>> x
Decimal('15.20')

Python 版本:2.7

我需要将 15.2 显示为 15.20(而不是 '15.20'

提前致谢

【问题讨论】:

将它作为字符串返回有什么问题?您当然可以显示它,并且会出现尾随零。 @wallyk 它是我的 django 应用程序的一部分,其中 api 返回一些 json 数据,而我的前端期望浮点数或十进制数。如果我可以直接获得预期的十进制值,那么它可以帮助我减少在前端执行的一些操作。 你不能这样做。浮点数表示不包括尾随零。 @DYZ 有什么方法可以从上面显示的十进制实例代码中获取值吗?如 >>> print x 所示 当然:float(x)。但无论你得到什么值,都将是一个浮点数。 【参考方案1】:

您可以创建一个具有这种行为的float 子类:

class RoundFloat(float):
    def __new__(cls, value=0, places=2):
        return float.__new__(cls, value)
    def __init__(self, value=0, places=2):
        self.places = str(places)
    def __str__(self): 
        return ("%." + self.places + "f") % self
    __repr__ = __str__

用法:

pi = RoundFloat(3.1415927, places=4)
print pi         # 3.1416

省略__repr__ 可能会很方便,这样您可以在需要时使用repr(x) 轻松获得全部价值。

【讨论】:

我以为你想要小数,而不是浮点数。我会看看这个 SO 问题:***.com/a/3148376/1904113

以上是关于在python中以十进制数字显示尾随零而不返回字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何只为单元格内的某些视图提供值,同时留下一些零而不崩溃?

检查数据框中的记录数是不是大于零而不使用计数火花

XSLT:显示尾随零

截断尾随零 datagridview 列

js-生成随机字符串

返回带有零而不是空值的 Access 记录集