Java double类型比较大小详解

网友投稿 246 2022-11-15

Java double类型比较大小详解

目录java double类型比较大小一、问题描述二、解决方法关于两个double类型数的大小判断

Java double类型比较大小

一、问题描述

把从数据库里查询出来的数据,金额小于1的数据给过滤掉,数据库里的数据有很多都是0.01,0.02,等。

二、解决方法

先把他们转成BigDecimal类型,然http://后在利用BigDecimal中的compareTo方法去比较大小,实现如下:

@org.junit.Test

public void Test(){

BigDecimal big = new BigDecimal(1);

BigDecimal Graphicprice = new BigDecimal(0.01);//图文价格

BigDecimal Speechprice = new BigDecimal(0.02);//语音价格

BigDecimal Videoprice = new BigDecimal(1);//视频价格

System.out.println(Ghttp://raphicprice + " " + Speechprice +" " + Videoprice);

if(Graphicprice.compareTo(big)<0 || Graphicprice.compareTo(big)==0 || Speechprice.compareTo(big)<0 || Speechprice.compareTo(big)==0 || Videoprice.compareTo(big)<0 || Videoprice.compareTo(big)==0){

System.out.println("ok");

}

}

输出结果如下:

@org.junit.Test

public void Test(){

BigDecimal data1 = new BigDecimal("1");

BigDecimal data2 = new BigDecimal("0.01");

if (data1.compareTo(data2) < 0) {

System.out.println("第二位数大!");

}

if (data1.compareTo(data2) == 0) {

System.out.println("两位数一样大!");

}

if (data1.compareTo(data2) > 0) {

System.out.println("第一位数大!");

}

}

关于两个double类型数的大小判断

大于小于是可以像整数那样直接判断的,但是不可以判断两个double是相等的。

因为

double类型的表示往往是不精确的(近似表示). 有精度范围的那种. 如果是运算结果,即使都是0.0,也不保证相等!一般用一个容差e(很小的值)

那么a和b相等就可以表示为

if ( fabs(a-b) < e )

return true;

注意:double类型虽然可以通过>和<直接比较,但是大于等于,小于等于是不能直接>=和<=比较的。

错误比较方式:now >= mid*n

正确比较方式:now - mid * n > -0.000001

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Linux】几条小的Shell判断
下一篇:【VSCode】VSCode工具系列-基本配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~