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
應該如何運作),如果是這樣,我只是誤解了在這種情況下的「整數」的含義?或者,故事還有更多,也許這只是巧合?
對不起,你說ROUND_HALF_EVEN意味着結果的最後一個數字是偶數,它是否也與小數有關?我問這是因爲如果你運行'>>> getcontext()。prec = 2;使用十進制模塊打印(十進制(254)/十進制(100000))',結果如下:** 0.0025 **以奇數5位結尾。你能否詳細解釋一下ROUND_HALF_EVEN在這種情況下會做些什麼?感謝您的關注! – tonix 2015-01-22 17:57:54
只有當舍入方式剛好是最後一位數字的一半時,最後一位數字纔會舍入到偶數位。在你的例子中,捨去的數量是最後一位數字的4/10,所以正常舍入發生。只有在完全舍入「半」時纔會觸發「EVEN」。 – casevh 2015-01-22 21:25:26