我正在用 JUnit 测试一个 PLSQL 过程,以达到他在 Java/Hibernate 中的“等于”。PLSQL 中的一个结果是 0,但 Java 结果是 0.0000,我尝试使用调用的函数stripTrailingZeros
但没有用。我认为就实际而言,它们是相同的,但根本不确定。
编辑我想删除没有数字意义的零,例如
2.3400 > 2.34
我可以这样做,stripTrailingZeros
但是当我应用该函数时返回相同的东西:
0.0000 > 0.0000
我正在用 JUnit 测试一个 PLSQL 过程,以达到他在 Java/Hibernate 中的“等于”。PLSQL 中的一个结果是 0,但 Java 结果是 0.0000,我尝试使用调用的函数stripTrailingZeros
但没有用。我认为就实际而言,它们是相同的,但根本不确定。
编辑我想删除没有数字意义的零,例如
2.3400 > 2.34
我可以这样做,stripTrailingZeros
但是当我应用该函数时返回相同的东西:
0.0000 > 0.0000
您正在做正确的事情,但是方法的实现是错误的。换句话说,Java 坏了。有一个关于这个问题的错误报告,但它似乎还没有解决。链接中包含客户提交的解决方法。基本上,做一个明确compareTo
的 with new BigDecimal("0")
,它工作正常。
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