我有一個列表或十進制數的在Python陣列。我需要將它們四捨五入到最接近的2位小數位,因爲這些是貨幣金額。但是,我需要維護總體和,即原始數組的四捨五入到小數點後2位的總和必須等於數組的四捨五入元素的總和。回合數的Python列表和維護的總和
這裏是我到目前爲止的代碼:
myOriginalList = [27226.94982, 193.0595233, 1764.3094, 12625.8607, 26714.67907, 18970.35388, 12725.41407, 23589.93271, 27948.40386, 23767.83261, 12449.81318]
originalTotal = round(sum(myOriginalList), 2)
# Answer = 187976.61
# Using numpy
myRoundedList = numpy.array(myOriginalList).round(2)
# New Array = [ 27226.95 193.06 1764.31 12625.86 26714.68 18970.35 12725.41 23589.93 27948.4 23767.83 12449.81]
newTotal = myRoundedList.sum()
# Answer = 187976.59
我需要修改我的新的圓形陣列等的有效方法是總和還187976.61。 2便士差異需要應用於項目7和6,因爲這些在四捨五入的條目和原始條目之間具有最大的差異。
任何想法?
您可能不應該使用浮點數來表示貨幣金額。有很多數字,比如'0.10','浮動'不能完全表示。 – NPE
你的numpy解決方案有什麼問題?如果我理解正確,那就是你正在尋找的答案...... – mgilson
@NPE:那不是什麼回合?我的意思是,數字0.1的任何不確定性都應該與機器精度相媲美,對嗎? – BenDundee