当前位置: 首页 > news >正文

关于 Double.compare()

使用<>对浮点数进行比较时,不够严谨,有这两个问题: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 smaller
        if (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标准进行大小比较,可以解决这两个问题。

相关文章:

  • mac关闭f11显示桌面快捷键
  • java中如何比较两个浮点型大小
  • 了解 BigDecimal.valueOf(double val)与new BigDecimal(double val) 的区别
  • 数值的整数次方 -- java
  • Could not get a resource from the pool 的原因之一
  • 打印从1到最大的n位数 -- java
  • 删除链表节点 -- java
  • npm 查看是否安装了某个包
  • 正则表达式匹配 -- java
  • 表示数值的字符串 -- java
  • 调整数组顺序使奇数位于偶数前面 -- java
  • 链表中倒数第K个节点 -- java
  • Mac查看npm安装位置
  • idea env: node: No such file or directory
  • 链表中环的入口节点 -- java
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • JAVA多线程机制解析-volatilesynchronized
  • java概述
  • Js基础知识(四) - js运行原理与机制
  • Swoft 源码剖析 - 代码自动更新机制
  • TypeScript迭代器
  • Vue小说阅读器(仿追书神器)
  • 基于遗传算法的优化问题求解
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 盘点那些不知名却常用的 Git 操作
  • 实现菜单下拉伸展折叠效果demo
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 我建了一个叫Hello World的项目
  • UI设计初学者应该如何入门?
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​用户画像从0到100的构建思路
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #define 用法
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (1)(1.11) SiK Radio v2(一)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net开发引用程序集提示没有强名称的解决办法
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @EnableAsync和@Async开始异步任务支持
  • @requestBody写与不写的情况
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [Apio2012]dispatching 左偏树
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [C#]winform部署yolov5-onnx模型
  • [C/C++随笔] char与unsigned char区别
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [Contest20180313]灵大会议