使用的是compareTo方法

BigDecimal a=new BigDecimal(123.123);
BigDecimal b =new BigDecimal(300.12);
int res = a.compareTo(b);
对比结果
大小情况 res值
a小于b -1
a等于b 0
a大于b 1

经常会有同学会想起来BigDecimal的对比方法而直接用 BigDecimal 转 double方式 然后进行比对。

BigDecimal a=new BigDecimal(123.123);
BigDecimal b =new BigDecimal(300.12);
if(a.doubleValue()>b.doubleValue()){}

那我们来看一下,这两种方式性能怎么样

然后写了如下代码

BigDecimal a=new BigDecimal(123.123);
BigDecimal b =new BigDecimal(300.12);
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {int dd = a.compareTo(b);
}
long endTime = System.currentTimeMillis();
System.out.println("程序运行时间:" + (endTime - startTime) + "ms");
startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {boolean dd = a.doubleValue()>b.doubleValue();
}
endTime = System.currentTimeMillis();
System.out.println("程序运行时间:" + (endTime - startTime) + "ms");
执行结果
方法 第一次 第二次 第三次 第四次 第五次 平均时间
BigDecimal比较 6ms 6ms 5ms 6ms 6ms 5.8ms
double比较 46ms 42ms 39ms 58ms 39ms 44.8ms

我们把执行的次数提升100倍

BigDecimal a=new BigDecimal(123.123);
BigDecimal b =new BigDecimal(300.12);
long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {int dd = a.compareTo(b);
}
long endTime = System.currentTimeMillis();
System.out.println("程序运行时间:" + (endTime - startTime) + "ms");
startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {boolean dd = a.doubleValue()>b.doubleValue();
}
endTime = System.currentTimeMillis();
System.out.println("程序运行时间:" + (endTime - startTime) + "ms");
执行结果
方法 第一次 第二次 第三次 第四次 第五次 平均时间
BigDecimal比较 70ms 76ms 61ms 78ms 101ms 77.2ms
double比较 954ms 969ms 898ms 909ms 924ms 930.8ms

总结:

使用BigDecimal比较方法和使用转换成double进行对比方法 性能有明显优势,执行次数越多越明显。

java BigDecimal比较大小相关推荐

  1. Java BigDecimal 比较大小

    需要使用使用compareTo(BigDecimal)方法 BigDemical a = BigDecimal.valueOf(1); BigDemical b = BigDecimal.valueO ...

  2. bigdecimal乘法_Java面试题之BigDecimal比较大小问题

    BigDecimal float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全 ...

  3. Java BigDecimal详解

    Java BigDecimal详解 1. BigDecimal概述 2. BigDecimal方法 2.1 BigDecimal常用构造函数 2.2 BigDecimal常用方法详解 3. BigDe ...

  4. JVM概念之Java对象的大小与引用类型

    2019独角兽企业重金招聘Python工程师标准>>> 本文来自和你在一起的博客,原文标题:<JVM调优总结(二)-一些概念>.本文总结了JVM概念中的Java对象的大小 ...

  5. java bigDecimal and double

    Java BigDecimal和double BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一个浮 ...

  6. java统计空间占用_JVM —— Java 对象占用空间大小计算

    引用类型(reference type: Integer)在 32 位系统上每一个占用 4bytes(即32bit, 才干管理 2^32=4G 的内存), 在 64 位系统上每一个占用 8bytes( ...

  7. linux看java堆大小,linux 改java堆内存大小

    linux 改java堆内存大小 [2021-02-08 23:06:29]  简介: linux查内存大小的方法:首先打开应用程序:然后选择系统工具选项,并单击系统终端选项:接着在系统终端命令行输入 ...

  8. tips:Java基本数据类型大小比较

    tips:Java基本数据类型大小比较! Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. ------四个整数型------ (1)byte:b ...

  9. java BigDecimal equals和compareTo区别

    为什么80%的码农都做不了架构师?>>>    对于BigDecimal的大小比较,用equals方法的话会不仅会比较值的大小,还会比较两个对象的精确度,而compareTo方法则不 ...

最新文章

  1. android 手机号分段_android 手机号分段_android系统实现手机号添加分割符
  2. HTML的br/标签和hr/标签
  3. JavaScript取出字符串中括号里的内容
  4. Java工作笔记-使用Hibernate连接mysql数据库并进行增、删、改、查!
  5. CFFI - ABI模式与API模式
  6. Java 笔记(二)
  7. 网易云数据库容灾策略
  8. 君正T31 ACC解码
  9. 音视频和图像相关知识点总结
  10. 八大数据结构及常见面试题
  11. 集成极光推送和厂商通道相关总结
  12. 浏览器清除缓存快捷键
  13. Excel合并两列中的文本内容
  14. 脉聊社交网站源码类似微博的社交源码 模板UI非常漂亮自适应手机版 重点是有原生APP
  15. 如何知道自己的手机注册了多少软件和网站?(亲测有效)
  16. php 菱形问号,python爬虫出现菱形问号乱码的解决方法
  17. 春节不出门!这三款超好评编程游戏,好玩到停不下来
  18. Java之png图片工具类
  19. 对抗生成神经网络-GAN通俗理解
  20. html实现文字滚动

热门文章

  1. APP和后端HTTP通信加密思路
  2. 聚观早报 | 苹果2024年放弃高通;腾讯回应进军类 ChatGPT
  3. 小程序中引导用户关注公众号
  4. 什么是抖音小程序 小程序该怎么做
  5. 如何修改云服务器的远程连接密码?
  6. 计算机开机后黑屏鼠标显示桌面图标,电脑开机后黑屏怎么解决只显示鼠标
  7. 头歌Educoder——JDBC基础编程练习
  8. MySQL自动删除指定时间以前的记录
  9. 傅里叶变换的简单理解
  10. 不同网络下 一台电脑连接另一台电脑的mysql数据库