2013-10-01 239 views
1

我需要將值舍入爲2位小數,但是當我使用round()時,它不起作用,如果值爲0.4,但我需要0.40。如何將小數點後一位的值舍入爲2位小數

round(0.4232323, 2) = 0.42 
bad: round(0.4, 2) = 0.4 

我該如何解決這個問題?

+0

你是什麼意思'需要輪'?你是指當你打印到屏幕或某些輸出文件? – darthbith

+0

爲什麼不使用'decimal'? – Joe

+8

.4和.40是完全一樣的數字。 –

回答

7

0.4和0.40在數學上相當。

如果你想保留兩位小數,以顯示它們,使用{:.2f}格式:

>>> '{:.2f}'.format(0.4) 
'0.40' 
+0

你確定嗎?我會說他們不同的精度。 – Joe

+0

@Joe:他們實際上是**完全相同的數字**。 Python不關心精確或有意義的數字。 – nneonneo

+0

@Joe:當然是什麼? .4和.40完全相同。從另一箇中減去一個的結果恰好爲零。 「.4」和「.40」對於相同的數字只是不同的數字。 –

1
print("{0:.2f}".format(round(0.4232323, 2))) 
1

如果您代表這些值作爲花車再有就是0.40.40之間沒有什麼區別。以不同的精度打印它們只是格式化字符串的問題(根據其他兩個答案)。

但是,如果要使用小數,則Python中有decimal module

>>> from decimal import Decimal 
>>> a = Decimal("0.40") 
>>> b = Decimal("0.4") 
# They have equal values 
>>> a == b 
True 

# But maintain their precision 
>>> a + 1 
Decimal('1.40') 

>>> b + 1 
Decimal('1.4') 

>>> a - b 
Decimal('0.00') 

使用quantize方法四捨五入到特定數量的位置。例如:

>>> c = Decimal(0.4232323) 
>>> c.quantize(Decimal("0.00")) 
Decimal('0.42') 
>>> str(c.quantize(Decimal("0.00"))) 
'0.42' 
相關問題