首页 文章

使用百分比和BigDecimal进行测试

提问于
浏览
4

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

我遇到的问题是,当我构建一些单元测试时,我试图确认生成的BigDecimal是.1但是当尝试等于(new BigDecimal(.1))时,由于双精度问题而失败 .

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

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

2 回答

  • 4

    使用BigDecimal时,应使用 compareTo 方法而不是 equals 方法进行"number equality"测试:

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

    比照javadoc了解更多信息 .

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

  • 7

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

    equals( new BigDecimal("0.1") );
    

相关问题