使用百分比和BigDecimal进行测试

时间:2012-06-25 14:59:51

标签: java junit floating-point bigdecimal

我有两个BigDecimals Actual和Budgeted。我将实际按预算划分为百分之百。

我遇到的问题是,当我正在构建一些单元测试时,我试图确认生成的BigDecimal是.1但是当尝试等于(new BigDecimal(.1))时这会因为double而失败准确性问题。

我想要克服这个问题的方法是创建两个BigDecimals - 十个和一个,将这两个分开并用它来测试。这样,我只使用定点数,我的计算应该完全正确。

所以我的问题是:有更好的方法吗?

2 个答案:

答案 0 :(得分:7)

使用BigDecimal时,您应该使用compareTo方法而不是equals方法进行“数字相等”测试:

if (bigDecimal1.compareTo(bigDecimal2) == 0) { //then they are equals

比照javadoc了解更多信息。

正如其他人所提到的,你应该使用字符串构造函数来避免舍入问题。

答案 1 :(得分:4)

您可以使用BigDecimaldocu)的字符串构造函数:

 equals( new BigDecimal("0.1") );