在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中以十进制数字显示尾随零而不返回字符串的主要内容,如果未能解决你的问题,请参考以下文章