【发布时间】:2010-09-14 00:34:36
【问题描述】:
我知道浮点数不适合存储货币值,因为舍入错误。有没有一种标准的方式来用 C++ 来表示金钱?
我查看了 boost 库并没有发现任何关于它的信息。在 java 中,似乎 BigInteger 是一种方式,但我在 C++ 中找不到等价物。我可以编写自己的货币类,但如果有测试,我宁愿不这样做。
【问题讨论】:
-
有关信息,使用二进制表示或十进制表示不会有或多或少的舍入误差(参见 1/3=0.333...)。使用十进制表示只会让您遇到与手动操作相同的舍入错误。 (更容易检查/匹配结果)
-
@Offirmo:是的。但是,如果您进行财务计算,很多错误可能源于必须将十进制货币转换为二进制货币这一事实。