2013-04-04 153 views
1

看起來,我可以在每個定義中找到round half to even包括nearest even integer(例如,Python的decimal documentation),就好像只有整數被四捨五入。但是,如果我將小數小於1的小數點後,它似乎遵循相同的原則,只將integer的角色分配給我正在舍入的小數位。例如:Python的ROUND_HALF_EVEN如何處理小於1的小數?

>>> THREE_PLACES = decimal.Decimal('0.000') 
>>> 
>>> decimal.Decimal('.0005').quantize(THREE_PLACES) 
>>> Decimal('0.000') 
>>> 
>>> decimal.Decimal('.0015').quantize(THREE_PLACES) 
>>> Decimal('0.002') 

在這個例子中,小數點後第三位的價值似乎發揮整數的作用(四捨五入到0和高達2)。這是指定的方式處理數字小於零(因此如何Python的ROUND_HALF_EVEN應該如何運作),如果是這樣,我只是誤解了在這種情況下的「整數」的含義?或者,故事還有更多,也許這只是巧合?

回答

1

您的解釋是正確的。文件不清楚,應該用digit而不是integer。 ROUND_HALF_EVEN意味着結果的最後一位數字是偶數(當完全舍入...... 5000時)。

+0

對不起,你說ROUND_HALF_EVEN意味着結果的最後一個數字是偶數,它是否也與小數有關?我問這是因爲如果你運行'>>> getcontext()。prec = 2;使用十進制模塊打印(十進制(254)/十進制(100000))',結果如下:** 0.0025 **以奇數5位結尾。你能否詳細解釋一下ROUND_HALF_EVEN在這種情況下會做些什麼?感謝您的關注! – tonix 2015-01-22 17:57:54

+0

只有當舍入方式剛好是最後一位數字的一半時,最後一位數字纔會舍入到偶數位。在你的例子中,捨去的數量是最後一位數字的4/10,所以正常舍入發生。只有在完全舍入「半」時纔會觸發「EVEN」。 – casevh 2015-01-22 21:25:26