使用<>对浮点数进行比较时,不够严谨,有这两个问题:0.0、-0.0的比较问题(0.0 > -0.0),以及NaN的问题(NaN永远比!NaN大),建议使用Double.compare()Float.compare()进行比较。

Double.compare()源码

    public static int compare(double d1, double d2) {if (d1 < d2)return -1;           // Neither val is NaN, thisVal is smallerif (d1 > d2)return 1;            // Neither val is NaN, thisVal is larger// Cannot use doubleToRawLongBits because of possibility of NaNs.long thisBits    = Double.doubleToLongBits(d1);long anotherBits = Double.doubleToLongBits(d2);return (thisBits == anotherBits ?  0 : // Values are equal(thisBits < anotherBits ? -1 : // (-0.0, 0.0) or (!NaN, NaN)1));                          // (0.0, -0.0) or (NaN, !NaN)}

源码中将浮点数转化为long类型的位序列,并根据IEEE754标准进行大小比较,可以解决这两个问题。

关于 Double.compare()相关推荐

  1. Float.compare()和Double.compare()的使用

    文章目录 1.源码解析 2.使用案例 1.源码解析 Float.compare(float f1, float f2) public static int compare(float f1, floa ...

  2. double compare 0

    因为double类型或float类型都是有精度的,其实都是取的近似值,所以有个误差.和一个很小的数比如0.00000001(1e-8)比较就是为了在这个误差范围内进行比较. 举个例子如double b ...

  3. java double方法_Java Double类compare()方法与示例

    java double方法 双类compare()方法 (Double class compare() method) compare() method is available in java.la ...

  4. java中double..compare_Java Double类compare()方法与示例

    Double类compare()法compare()方法在java.lang包中可用. compare()方法用于检查给定两个双精度值的相等或不相等,换句话说,可以说此方法用于比较两个双精度值. co ...

  5. java 比较器comparator_Java中比较器的使用Compare和Comparator

    Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较 ...

  6. android double比较大小吗,java – Android – 比较方法违反了它的一般...

    没有用于重新发明轮子.我相信你应该只返回lhs.getDist().compareTo(rhs.getDist());让提供的实现compareTo完成这项工作. Compares two Doubl ...

  7. double类型进行比较排序

    不用两个double直接进行强转是为了防止精度的损失 方式一: @Overridepublic int compareTo(Object o) {// System.out.println(" ...

  8. JDK源码解析之 Java.lang.Double

    Double类是原始类型double的包装类,它包含若干有效处理double值的方法,如将其转换为字符串表示形式,反之亦然.Double类的对象可以包含一个double值. Double类包装原始类型 ...

  9. double 最大_LeetCode 1610—可见点的最大数目

    关键字:计算几何,滑动窗口 归航return:LeetCode 460-LFU 缓存设计​zhuanlan.zhihu.com 归航return:(Trivial)LeetCode 1354--多次求 ...

最新文章

  1. rm -rf ~/.bashrc 的惨痛教训
  2. 1.0 mysql的连接
  3. 古老的spc也可以用机器学习(三)-支持向量机算法
  4. Linux设备驱动程序学习(4) -高级字符驱动程序操作[(1)ioctl and llseek]
  5. 云原生开发环境初探 | CSDN 博文精选
  6. 存储极客谈“SPC-1负载分析与AFA寿命评估”
  7. 图解虚拟机三种网络连接方式
  8. 如何提升深度学习的性能
  9. python随手记自动记账_简化记账——我的“随手记”
  10. 这样的简历HR才会看----个人整理
  11. 安装CoffeeScript
  12. 借助HttpCombiner让你的网站加速
  13. 【Vivado那些事儿】强制修改打开Vivado工程使用的Vivado版本
  14. 窗口模式,点按钮防止弹出新弹出页面
  15. 数字化转型:企业转型的数据治理方式
  16. python项目开发案例精粹-Python金融实战案例精粹
  17. 传奇私服架设(温故2002,自己制作传奇私服服务器)
  18. 中国万网3月上旬域名总量净增4.2万 国内份额超24%
  19. 安卓移动办公软件_移动办公软件-手机办公app-财务管理软件
  20. ArcGIS api for JavaScript 之 空间、属性查询

热门文章

  1. windows驱动开发资料(《windows驱动开发技术详解》)+源码
  2. 小程序Date.toLocaleString()方法在安卓上不起效的解决办法
  3. 李宏毅人类语言处理2020:Speech Separation
  4. 防UC浏览器,夸克浏览器转码,应对UC浏览器、夸克浏览器转码,UC浏览器、夸克浏览器转码解决办法
  5. 医院网站建设改版:医院站群系统模块有哪些?
  6. PHP数据类型有几种?
  7. 微信小程序开发学习1(小程序的入门知识)
  8. css阴影实现浮雕阴影
  9. linux防火墙策略配置、查看操作实例
  10. 金华计算机学校取分,2021年金华高中学校排名及录取分数线排名