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

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

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

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

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

例如:

[java] view plain copy

  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类型!

public int compareTo(BigDecimal val)

将此 BigDecimal 与指定的 BigDecimal 比较。根据此方法,值相等但具有不同标度的两个 BigDecimal 对象(如,2.0 和 2.00)被认为是相等的。相对六个 boolean 比较运算符 (<, ==, >, >=, !=, <=) 中每一个运算符的各个方法,优先提供此方法。建议使用以下语句执行上述比较:(x.compareTo(y) <op> 0),其中 <op> 是六个比较运算符之一。

指定者:

接口 Comparable<BigDecimal> 中的 compareTo

参数:

val - 将此 BigDecimal 与之比较的 BigDecimal。

返回:

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

第四种方法:

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

范围:1e-6(0.000001)

主要代码:

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

Java中double类型比较大小或相等的方法相关推荐

  1. java中double类型精度丢失问题及解决方法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源: https://blog.csdn.net/yacolsp ...

  2. Java中double类型比较大小

    Double.doubleToLongBits(0.01) == Double.doubleToLongBits(0.01) Double.doubleToLongBits(0.02) > Do ...

  3. Java中double类型输出小数点后两位

    Java中double类型输出小数点后两位 思路 就是在输出的时候使用字符串格式即可. double testNum=1.123456789;System.out.println(String.for ...

  4. java double 转string_double转string java中double类型如何转换为String类型

    double转string java中double类型如何转换为String类型 在我们做的项目中,有一个字符串的生成,我们需要double去拼接,结果发现了,拼接后的字符串,那个double值用科学 ...

  5. Java中Double保留自定义小数位的几种方法

    Java中Double保留自定义小数位的几种方法 在Java语言编程中我们有时候会有保留指定小数位的需求,那应该如何操作呢,下面带来几种方法:(这里的所有方法以保留两位小数位为例) 一. 四舍五入并保 ...

  6. Java中double类型大小比较的五种方法

    文章目录 1.使用BigDecimal 2.使用包装类Double 3.在误差范围内运行相等 4.转换成字符串 5.使用doubleToLongBits()方法 在Java中 int类型数据的大小比较 ...

  7. java中double类型占几个字节_java中各种数据类型占用字节数

    1字节(Byte)=8bit java的基本类型 类型 所占字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 String中字母和汉字所占字 ...

  8. double operator[](int i)_java中double类型精度丢失问题及解决方法

    原文链接:https://blog.csdn.net/yacolspace/article/details/78287394 double类型数据加减操作精度丢失问题 今天在项目中用到double类型 ...

  9. java中double类型占几个字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...

    认识基本数据类型 在学习基本数据类型之前,我们先认识一下这两个单词:1.bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为"0"或"1&quo ...

最新文章

  1. sqlserver 批量插入数据(此方式同样适用mysql)
  2. 关于“System.Data.ProviderIncompatibleException”类型的异常
  3. 算法-----两数之和 II - 输入有序数组
  4. 没有对“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files”的写访问权限...
  5. SPOJ 27020 GST Calculator
  6. 如何选择汽车LiDAR的激光器和光电探测器
  7. lucene源码分析(6)Query分析
  8. python暂停和恢复_python-线程的暂停, 恢复, 退出
  9. 如何不使用Java 8默认方法
  10. hibernate 封装 2008-11-12 17:21 (分类:默认分类)
  11. mds算法 java_对OAF开发中的MDS的初步研究(转)
  12. 不虚此行!OpenStack 温哥华峰会参会分享值得收藏
  13. idea主题插件网址
  14. 电气版CAD学习笔记
  15. 全球及中国石头纸行业发展动态与投资现状分析报告2022版
  16. c语言两个字符串比较,将两个字符串s1和s2比较,如果s1s2,作业 - 编一个程序,将两个字符串s1和s2比较,如果.doc...
  17. 智慧工厂之化工厂人员定位系统,工厂实时定位,视频联动-新导智能
  18. 为什么微信连接不上服务器失败怎么回事啊,微信为什么一直提示连接失败请检查网络设置...
  19. 2021年国企、银行求职面经汇总(更新中)
  20. Android中的优化问题

热门文章

  1. 浅谈IT从业人员与“反脆弱”的职业思考
  2. c语言 用getchar和putchar实现字符串的输入输出
  3. 小程序技术在软件供应链安全也能帮得上忙?
  4. 计算机怎么删除手机密码,手机锁屏密码忘记,要怎么清除锁屏密码?
  5. 使用二重积分来求旋转体的体积
  6. Cocos2d-x 4.0 安装教程(Windows10 + Visual Studio 2019)
  7. 一个屌丝程序猿的人生(三十三)
  8. 六问解密慢公司:豆瓣到底是什么?(转 chinaz)
  9. 传智播客 传智播客.NET视频学习课件
  10. 端午将至,VR全景奉上别开生面的“云上”端午节