java - 使用百分比和 BigDecimal 进行测试

标签 java junit floating-point bigdecimal

我有两个 BigDecimals Actual 和 Budgeted。我将实际值除以预算值得出一个百分比。

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

我想克服这个问题的方法是创建两个 BigDecimals - 十和百,将这两个相除并用它来测试。这样,我只使用定点数,我的计算应该会准确无误。

所以我的问题是:是否有更好的方法来做到这一点?

最佳答案

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

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

比照。 javadoc获取更多信息。

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

关于java - 使用百分比和 BigDecimal 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191820/

相关文章:

java - 使用 snakeyaml(导入 junit 库)将 .yml 文件加载到 HashMap 中

java - 如何对需要键盘输入的方法进行单元测试?

java - java为了什么目的有一个float原始类型?

java - 列表情况下的泛型类型转换

java - 使用 java.util.Date 输入的 Postgres 上的时间戳超出范围错误

java - 在 LinkedHashMap 中使用双向链表而不是单链表

java - 如何自动运行测试?

java - 从 Java 执行 CURL - 正确的方法是什么?

java - 解析有效数字后得到垃圾?

C: printf 一个浮点值