【问题标题】:Display trailing zeros in a decimal number in python without returning a string在python中以十进制数字显示尾随零而不返回字符串
【发布时间】: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)。但无论你得到什么值,都将是一个浮点数。

标签: python python-2.7


【解决方案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) 轻松获得全部价值。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 2021-08-12
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多