当前位置:龙哥网 > 网络技术 > Java double类型比较大小详解_java

Java double类型比较大小详解_java

longge3个月前 (03-01)网络技术93
目录
  • java double类型比较大小
    • 一、问题描述
    • 二、解决方法
  • 关于两个double类型数的大小判断

    Java double类型比较大小

    一、问题描述

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

    二、解决方法

    先把他们转成BigDecimal类型,然后在利用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(Graphicprice + " " + 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");
    		}
    	}

    输出结果如下:

    Java double类型比较大小详解_java

    	@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

    免责声明
    本站部分资源来源于互联网 如有侵权 请联系站长删除
    龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。#转载请注明出处!