BigDecimal是Java里精确计算的类,下面说一下两个BigDecimal对象大小,相等的判断。

一般的对象用equals,但是BigDecimal比较特殊,举个例子:

BigDecimal a=BigDecimal.valueOf(1.0);
BigDecimal b=BigDecimal.valueOf(1.000);

在现实中这两个数字是相等的,但是如果用a.equals(b)结果是false;怎么不相等了呢?因为equals是比较内容,“1.0”和“1.000”当然不一样了。

解决办法:if(a.compareTo(b)==0) 结果是true。

实例一:

package com.bijian.test;import java.math.BigDecimal;public class Test {public static void main(String[] args) {BigDecimal a = new BigDecimal("10.00");BigDecimal b = new BigDecimal("10");BigDecimal c = new BigDecimal(10.00);//equals方式System.out.println(a.equals(b)); //falseSystem.out.println(a.equals(c)); //false//toPlainString再equalsSystem.out.println(a.toPlainString().equals(b.toPlainString())); //falseSystem.out.println(a.toPlainString().equals(c.toPlainString())); //false//longValue方式System.out.println(a.longValue() == b.longValue()); //trueSystem.out.println(a.longValue() == c.longValue()); //true//compareToSystem.out.println(a.compareTo(b) == 0); //trueSystem.out.println(a.compareTo(c) == 0); //true}
}

从实例一来看,好像longValue方式也可以,让我们继续看实例二。

实例二:

package com.bijian.test;import java.math.BigDecimal;public class Test02 {public static void main(String[] args) {BigDecimal d = new BigDecimal("10.100001");BigDecimal e = new BigDecimal(10.100001);System.out.println(e.equals(d)); //falseSystem.out.println(e.toPlainString().equals(d.toPlainString())); //falseSystem.out.println(e.longValue() == d.longValue()); //trueSystem.out.println(e.compareTo(d) == 0); //false}
}

为什么compareTo方法不可以了,而longValue方式却还是OK的。让我们Debug一下。




        Debug我们发现,BigDecimal d = new BigDecimal("10.100001");和BigDecimal e = new BigDecimal(10.100001);出来的两个对象,实际上确实是不一样的,而longValue()后都变成了10。

BigDecimal如何比较大小相关推荐

  1. BigDecimal 类型 比较大小

    目录 1 BigDecimal 类型 比较大小 1 BigDecimal 类型 比较大小 public class QualityUtils {public static void main(Stri ...

  2. java中BigDecimal类型数据大小比较

    一 概述 在Java中会存在数值的比较,在进行金额计算的时候,一般会通过BigDecimal类型的数字进行计算. 二 BigDecimal类型数据大小比较 if(numOne.compareTo(nu ...

  3. java的BigDecimal类型比较大小

    java的BigDecimal类型比较大小 示例如下: /*** 根据数值: 比较超限信息* @param data* @param max* @param min* @return 报警状态: 0表 ...

  4. BigDecimal加减乘(cheng)除BigDecimal[]数组比较大小

    文章目录 前言 一.Bigdecimal是什么? 二.使用步骤 总结 前言 提示:BigDecimal 在使用的过程中尽量采用String类型的参数进行转换尽量避免不使用字符串的数字对小数点进行数据格 ...

  5. java BigDecimal类型 比较大小

    一般我们进行类型比较有.equals().==..compareTo() 但是当比较bigdecimal类型时最好使用.compareTo()来比较大小 BigDecimal a=BigDecimal ...

  6. Java中使用BigDecimal类型比较大小

    BigDecimal使用心得 BigDecimal使用场景 为什么要用BigDecimal 用BigDecimal的compareTo方法做大小判断 BigDecimal使用场景 BigDecimal ...

  7. BigDecimal类型比较大小

    这个类是java里精确计算的类 1 比较对象是否相等      一般的对象用equals,但是BigDecimal比较特殊,举个例子:      BigDecimal a=BigDecimal.val ...

  8. java中BigDecimal类型比较大小和绝对值计算

    文章目录 前言 关键方法: 代码测试: 将equals()方法和compareTo()作比较 前言 涉及到BigDecimal类型的比较,最好使用compareTo()方法,不要用equals()方法 ...

  9. BigDecimal类型 比较大小的方法

    1.转成int BigDecimal b1 = new BigDecimal("-121454125453.145"); if(b1.intValue()<0) {Syste ...

最新文章

  1. 方法 retrun 异步的值,创建一个变量直接等于一个异步方法返回的值
  2. phpcms V9利用num++实现多样形式列表标签调用
  3. 使用NetBeans6开发OSGi应用(3)——整合Knopflerfish![88250原创]
  4. Python第三、四种数据类型——List(列表) and Tuple(元组)
  5. 报名 | 想在硅谷近距离接触蚂蚁金服的CTO和一众技术高管?这个机会一定不能错过!...
  6. 项目管理excel_项目经理必备的6款项目管理软件
  7. 微软开源PowerShell并支持Linux
  8. position定位——让人又爱又恨的属性
  9. LeetCode 154 寻找旋转排序数组中的最小值 II
  10. bzoj 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛(BFS)
  11. js页面跳转 和 js打开新窗口 方法 【转】
  12. Linux内核快速处理路径尽量多用slab而慎用kmalloc
  13. python爬取国内代理ip_python爬虫实战:爬取西刺代理的代理ip(二)
  14. zotero中的标准和规范应该用什么类型
  15. 如何用python爬取下载微博视频_程序员徒手用python教你爬取新浪微博,一天可抓取 1300 万条数据...
  16. Windows server 2008 安装Hyper-V
  17. 【SDN】普通路由器刷OpenWrt+OpenFlow教程完美版_搭建SDN OpenFlow1.3协议的路由器(Flash<16M)
  18. 百度2019Q3财报和战略分析
  19. AD与AAD区别和联系
  20. hadoop 权威指南 HBase

热门文章

  1. 一位台湾学校校长的演讲
  2. 求职指南!给数据开发的SQL面试准备路径!
  3. C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)
  4. Walletry for mac(日常支出跟踪工具)
  5. SQL Server 为视图或函数 指定的列名比其定义中的列多
  6. 若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛?
  7. python怎么建立项目经理部的基本原则_一个关于项目经理的故事
  8. Clustering coefficient的计算
  9. 简易搭建阿里云个人简历网站教程
  10. 学习发展历史,真的一无所用吗?NO