栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java BigDecimal比较大小

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java BigDecimal比较大小

使用的是compareTo方法

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

经常会有同学会想起来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比较6ms6ms5ms6ms6ms5.8ms
double比较46ms42ms39ms58ms39ms44.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比较70ms76ms61ms78ms101ms77.2ms
double比较954ms969ms898ms909ms924ms930.8ms

 

总结:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/856791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号