0


0.00<>0.0(BIGDECIMAL类型 的比较)

现实中,0.00不等于0.0,这是不是太不智能?但是在JAVA上看来,这是正常的,因为类型的原因 ,因为精度的关系,所以不等。

在.NET 中

Decimal cc = 266.00m;
Decimal dd = 266.0m;

        if (cc == dd)
         {
             return "true";
         }
         else
         {
           return  "false";
         }

返回的是TRUE

而在JAVA中

BigDecimal xx=new BigDecimal(366.00);
 BigDecimal yy=new BigDecimal(366.0);
 log.info("=={}equals{}compareto{} ",xx==yy,xx.equals(yy),xx.compareTo(yy)==0);

==返回的是FALSE

另外:在比较两个

BigDecimal

的值是否相等时,要特别注意,使用

equals()

方法不但要求两个

BigDecimal

的值相等,还要求它们的

scale()

相等:

必须使用

compareTo()

方法来比较,它根据两个值的大小分别返回负数、正数和

0

,分别表示小于、大于和等于。

总是使用compareTo()比较两个BigDecimal的值,不要使用equals()!

如果查看

BigDecimal

的源码,可以发现,实际上一个

BigDecimal

是通过一个

BigInteger

和一个

scale

来表示的,即

BigInteger

表示一个完整的整数,而

scale

表示小数位数:

这真是科学而不智能。

标签: java

本文转载自: https://blog.csdn.net/jing_xin/article/details/117109738
版权归原作者 静_心 所有, 如有侵权,请联系我们删除。

“0.00<>0.0(BIGDECIMAL类型 的比较)”的评论:

还没有评论