zoukankan      html  css  js  c++  java
  • Java中double类型比较大小或相等的方法

    在Java中int类型数据的大小比较可以使用双等号,double类型则不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以。下面介绍两种比较double数据是否相等的方法。

    第一种方法:转换成字符串

    如果要比较的两个double数据的字符串精度相等,可以将数据转换成string然后借助string的equals方法来间接实现比较两个double数据是否相等。注意这种方法只适用于比较精度相同的数据,并且是只用用于比较是否相等的情况下,不能用来判断大小。

    第二种方法:使用sun提供的Double.doubleToLongBits()方法

    该方法可以将double转换成long型数据,从而可以使double按照long的方法(<, >, ==)判断是否大小和是否相等。

    例如:

    1. Double.doubleToLongBits(0.01) == Double.doubleToLongBits(0.01)
    2. Double.doubleToLongBits(0.02) > Double.doubleToLongBits(0.01)
    3. Double.doubleToLongBits(0.02) < Double.doubleToLongBits(0.01)

    第三种方法:

    double a = 0.001; 
    double b = 0.0011; 
    BigDecimal data1 = new BigDecimal(a); 
    BigDecimal data2 = new BigDecimal(b); 
    data1.compareTo(data2) 
    非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型!

    当此 BigDecimal 在数字上小于、等于或大于 val 时,返回 -1、0 或 1。

    第四种方法:

    两实数相等:两实数的差在允许的范围内认为相等既可认为是相等的。

    范围:1e-6(0.000001)

    主要代码:

    int IsEqual(double a,double b){ return fabs(a-b) < 0.000001;}

  • 相关阅读:
    BZOJ4008: [HNOI2015]亚瑟王
    BZOJ4260: Codechef REBXOR
    BZOJ4408: [Fj Winter Camp 2016]神秘数
    BZOJ4010: [HNOI2015]菜肴制作
    ccc2016
    BZOJ3884: 上帝与集合的正确用法
    BZOJ1017: [JSOI2008]魔兽地图DotR
    BZOJ1011: [HNOI2008]遥远的行星
    BestCoder Round #73
    hdu4035(概率dp)
  • 原文地址:https://www.cnblogs.com/treasury/p/13191452.html
Copyright © 2011-2022 走看看