EDIT2:我是个白痴>。<
编辑:我需要将此问题缩小到规模。 我将在今晚晚些时候发布一个更简单的问题。
这一直,我需要问的是,"有人能提醒我如何使用Java现金吗?",但是没有...我总是找到最复杂的说法最简单的事情x_x
EDIT3:为了清楚起见,我也发现了这一点:http://www.javaranch.com/journal/2003/07/MoneyInJava.html 这有助于使用BigDecimal。
答案 0 :(得分:0)
我看到处理货币值的最好方法是在内部将它们作为非十进制类型处理,并且只根据需要对输出和输入执行转换。
例如:$ 10.34可以/应该存储为Integer或Long 1034,然后根据需要显示为(Integer)1034 / 100,1034 mod 100(注意:我的java模数运算符可能/可能已关闭 - 请勿使用它经常就够了)。
任何时候处理浮点数都存在精度损失的风险。由于货币被定义为具有固定浮点和固定小数位数,因此将所有值缩放100可消除此问题。这确实削减了可以表示的最大货币数量,但通常这不是关注而是准确性。