擅长:python、mysql、java
<p>首先,你不应该用浮点数来储存钱(用小数代替)。但下面我提供了一些非常通用的解决方案-您需要存储、累积和使用舍入中的差异之和。一些冗长的(不是很像Python的;-)示例:</p>
<pre><code># define your accuracy
decimal_positions = 2
numbers = [27226.94982, 193.0595233, 1764.3094, 12625.8607, 26714.67907, 18970.35388, 12725.41407, 23589.93271, 27948.40386, 23767.83261, 12449.81318]
print round(sum(numbers),decimal_positions)
>>> 187976.61
new_numbers = list()
rest = 0.0
for n in numbers:
new_n = round(n + rest,decimal_positions)
rest += n - new_n
new_numbers.append( new_n )
print sum(new_numbers)
>>> 187976.61
</code></pre>