2017-02-23 74 views
0

我需要顯示十進制數的尾隨零。我已經考慮使用python format(),但它返回一個字符串,當我將其轉換爲浮點數或小數點時尾隨零消失 s。在python中顯示十進制數的尾隨零而不返回字符串

我也嘗試過使用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 0.20' < <串類型)

由於事先

+5

它將它作爲字符串返回時出了什麼問題?你當然可以顯示,並顯示尾隨零。 – wallyk

+0

@wallyk它是我的Django應用程序的一部分,其中api返回一些json數據,我的前端期待float或decimal。如果我可以直接獲得預期的十進制值,那麼它可以幫助我減少在前端執行的一些操作。 – Wineartist

+3

你不能這樣做。浮點數表示不包括尾隨零。 – DyZ

回答

0

您可以創建一個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)

+0

它的工作.....謝謝你! – Wineartist

+0

我以爲你想要小數,而不是浮動。我會看看這個問題:http://stackoverflow.com/a/3148376/1904113 – MKesper

相關問題