BigDecimal 0.000到0

时间:2012-07-04 18:25:19

标签: hibernate plsql bigdecimal

我正在使用JUnit测试一个PLSQL程序,在Java / Hibernate中测试他的“equals”。 PLSQL中的一个结果是0但Java结果是0.0000,我尝试使用名为stripTrailingZeros的函数但是没有用。我认为实际上有相同的但根本不确定。

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

2.3400> 2.34

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

0.0000> 0.0000

2 个答案:

答案 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