如何避免使用Colt矩阵库执行财务计算中的浮点错误?
答案 0 :(得分:3)
关于浮点类型的肮脏性的一些基本读物:What Every Computer Scientist Should Know About Floating Point Arithmetic
更多Java风格的东西:How Java’s Floating-Point Hurts Everyone Everywhere
答案 1 :(得分:0)
一种常见的技术是使用整数并自己跟踪小数。 例如,您可以决定所有货币金额将以3小数精度表示。所以不要写:
double dollars = 10.05d;
你写了
int dollars = 10050;
当您想要打印金额时:
System.out.println( dollars/100d );
答案 2 :(得分:0)
对于财务,使用BigDecimal和相关类更常见。浮动和双打在任何情况下都很容易出现舍入误差。
如果您决定尝试使用BigDecimal,可能需要查看Apache Commons Math。