应使用哪个类来表示货币?

50 投票
6 回答
46923 浏览
提问于 2025-04-15 14:13

我应该用什么类来表示钱,以避免大多数的四舍五入错误?

我应该使用 Decimal,还是简单的内置 number 呢?

有没有现成的 Money 类可以支持货币转换,我可以使用的?

我需要避免哪些常见的陷阱?

6 个回答

20

直接使用 decimal 这个库就可以了。

42

千万不要用浮点数来表示钱。浮点数在小数表示上不够准确,可能会导致一堆复杂的四舍五入错误,让你在不同货币之间转换时非常麻烦。想了解更多,可以看看马丁·福勒关于这个话题的短文

如果你决定自己写一个类,建议你可以参考decimal这个数据类型。

我觉得python-money不是个好选择,因为它很久没更新了,源代码里还有一些奇怪和没用的代码,而且货币兑换功能也坏掉了。

可以试试py-moneyed,这个比python-money要好一些。

10

http://code.google.com/p/python-money/ “在Python中处理金钱和货币的基本工具” - 这个标题已经很清楚了 :)

撰写回答