2016-12-21 39 views
1

我定義了一個包含屬性和打印函數的類,它將該類的屬性打印到控制檯。如果我打電話給打印功能,如:object.printing_function(),打印所需的值,例如0.24在iPython中打印值

但是,當我從無類訪問屬性時,如:object.attribute,返回值爲0.23999999999999。

打印(object.attribute)也給出了0.24,我該如何改變object.attribute返回0.24?

我使用: 的Spyder(Anaconda)的 的Python 3.5

+1

它不是0.24。就電腦而言,這個數字並不存在。 – TigerhawkT3

+0

Okey,我從csv文件導入一個pd數據幀。 csv文件顯示正確的數字(0.24),但導入的數據幀的確顯示0.23999999。 –

+0

請參閱@ TigerhawkT3響應。您正在看到浮點表示。 –

回答

0

如果屬性是一個浮點數,你必須格式,如果你是直接訪問屬性輸出:

val = 0.23999999999999 
print("{:.2f}".format(val)) 

# Output 
# '0.24' 
1

可以使用Decimal類可以準確地表示十進制數:

>>> import decimal 
>>> print('{:.20f}'.format(0.24)) 
0.23999999999999999112 
>>> print('{:.20f}'.format(decimal.Decimal('0.24'))) 
0.24000000000000000000 

由於註釋指出,作爲float的0.24不能完全用二進制表示,就像1/3不能完全用十進制表示一樣。