我知道BigDecimal是表达货币的最准确方法,因为将货币值视为浮点数据类型会导致舍入错误。但是,我也了解BigDecimal计算需要更多内存。也就是说,对于处理货币值的程序,使用BigDecimal而不是float或double真的是最佳实践吗?如果我制作了一个程序,可以打印出餐厅每笔订单的逐项收据,那么如果我使用BigDecimal,是否更可能用完内存?如果改用浮点值,是否更有可能出现舍入错误?
(注意:“如何使用Java BigDecimal性能?”是一个稍微相似的问题,但是我更关心相对简单的快餐交易中风险最小的选项。)
答案 0 :(得分:7)
除非您的程序一次处理数百万个BigDecimal,否则您不会真正注意到内存消耗的差异。
如果您确实使用这样的流量运行服务,那么您肯定可以负担得起额外的千兆字节RAM,而不必为不正确的计算而提起诉讼;-)。