我是靠谱客的博主 耍酷花卷,最近开发中收集的这篇文章主要介绍BigDecimal的compareTo和equals方法的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

BigDecimal 的等值比较应使用 compareTo() 方法,而不是 equals() 方法。

为什么呢,我们看一下代码:

 public static void main(String[] args) {
     //
     final BigDecimal b1 = new BigDecimal("1.0");
     final BigDecimal b2 = new BigDecimal("1.00");
     System.out.println(b1.equals(b2));
 }

返回结果是什么呢,运行一下就知道了

false

可能有的人不明白,明明都是1,为什么是false呢,其实,equals() 方法会比较值和精度,它们的值虽然都是1,但精度却不相同,如果都改为相同精度在测试:

public static void main(String[] args) {
     //
     final BigDecimal b1 = new BigDecimal("1.00");
     final BigDecimal b2 = new BigDecimal("1.00");
     System.out.println(b1.equals(b2));
 }

true

此时结果为true了,因为值和精度是一样的。

那么如果我们要用BigDecimal进行值比较的时候,不想考虑精度怎么办呢,这时候我们就可以使用compareTo方法了,针对一开始1.0和1.00的比较,我们可以使用compareTo:

 public static void main(String[] args) {
     //
     final BigDecimal b1 = new BigDecimal("1.0");
     final BigDecimal b2 = new BigDecimal("1.00");
     System.out.println(b1.compareTo(b2) == 0);
 }

true

1.01和1.00的比较:

 public static void main(String[] args) {
     //
     final BigDecimal b1 = new BigDecimal("1.01");
     final BigDecimal b2 = new BigDecimal("1.00");
     System.out.println(b1.compareTo(b2) == 0);
 }

false

此时b1.compareTo(b2) 的值是1,因为1.01>1.00

1.01和1.02的比较:

public static void main(String[] args) {
    //
    final BigDecimal b1 = new BigDecimal("1.01");
    final BigDecimal b2 = new BigDecimal("1.02");
    System.out.println(b1.compareTo(b2) == 0);
}

false

此时b1.compareTo(b2) 的值是-1,因为1.01<1.02

总结

总结,BigDecimal值比较的时候,尤其是带精度问题的,我们就可以使用compareTo方法来做了。

最后

以上就是耍酷花卷为你收集整理的BigDecimal的compareTo和equals方法的使用的全部内容,希望文章能够帮你解决BigDecimal的compareTo和equals方法的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部