3

我正在用 JUnit 测试一个 PLSQL 过程,以达到他在 Java/Hibernate 中的“等于”。PLSQL 中的一个结果是 0,但 Java 结果是 0.0000,我尝试使用调用的函数stripTrailingZeros但没有用。我认为就实际而言,它们是相同的,但根本不确定。

编辑我想删除没有数字意义的零,例如

2.3400 > 2.34

我可以这样做,stripTrailingZeros但是当我应用该函数时返回相同的东西:

0.0000 > 0.0000

4

2 回答 2

6

您正在做正确的事情,但是方法的实现是错误的。换句话说,Java 坏了。有一个关于这个问题的错误报告,但它似乎还没有解决。链接中包含客户提交的解决方法。基本上,做一个明确compareTo的 with new BigDecimal("0"),它工作正常。

于 2012-07-05T13:19:56.520 回答
3
BigDecimal bd1 = new BigDecimal("0.0000");
System.out.println(bd1); // -> 0.0000
BigDecimal bd2 = bd1.setScale(0);
System.out.println(bd2); // -> 0
System.out.println(bd1.equals(bd2)); // -> false
System.out.println(bd1.compareTo(bd2) == 0); // -> true
于 2012-07-04T21:32:05.330 回答