我正在使用JUnit测试一个PLSQL程序,在Java / Hibernate中测试他的“equals”。
PLSQL中的一个结果是0但Java结果是0.0000,我尝试使用名为stripTrailingZeros
的函数但是没有用。我认为实际上有相同的但根本不确定。
编辑我想删除没有数字意义的零,例如
2.3400> 2.34
我可以用stripTrailingZeros
来做,但当我应用该函数时返回相同的东西:
0.0000> 0.0000
答案 0 :(得分:5)
你做的是正确的事,但方法的实施是错误的。换句话说,Java被打破了。 There is a bug report about this issue但似乎尚未得到解决。链接中包含客户提交的解决方法。基本上,使用compareTo
做一个明确的new BigDecimal("0")
,它可以正常工作。
答案 1 :(得分: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