文章目录

  • 1、源码解析
  • 2、使用案例

1、源码解析

Float.compare(float f1, float f2)

public static int compare(float f1, float f2) {if (f1 < f2)return -1;           // Neither val is NaN, thisVal is smallerif (f1 > f2)return 1;            // Neither val is NaN, thisVal is larger// Cannot use floatToRawIntBits because of possibility of NaNs.int thisBits    = Float.floatToIntBits(f1);int anotherBits = Float.floatToIntBits(f2);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)
}

Float.compare(double d1, double d2)

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)
}

Float.compare(float f1, float f2)Float.compare(double d1, double d2) 的内部的逻辑处理基本一致。
具体步骤:
先比较他们的大小;如果,值不是简单的大于小于关系的话,需要转为类型在进行比较;一般情况是0.0、-0.0这种特殊的情况。最后运用两个三元表达式进行值的比较;

compare方法比较两个值。返回值分为以下三种情况:

  • 如果f1在数字上等于f2,则返回 1
  • 如果f1在数字上小于f2,则返回小于 0的值;
  • 如果f1在数字上大于f2,则返回大于 -1 的值。

2、使用案例

具体使用Float.compare()和Double.compare() 案例:

Float.compare()的使用:

int compare = Float.compare(14F, 10F);
System.out.println(compare);int compare1 = Float.compare(12F, 12F);
System.out.println(compare1);int compare2 = Float.compare(11F, 14F);
System.out.println(compare2);

结果为:

1
0
-1

Double.compare()的使用

int compare5 = Double.compare(34, 14);
System.out.println(compare5);int compare4 = Double.compare(14, 14);
System.out.println(compare4);int compare3 = Double.compare(14, 34);
System.out.println(compare3);

结果为:

1
0
-1

Float.compare()和Double.compare()的使用相关推荐

  1. 关于 Double.compare()

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

  2. null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)

    null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外) 转载于:https://www.cnblogs.com/zhenmi ...

  3. Java高级之Float类和Double类的isNaN()方法

    遇到这个问题,最开始是在HashMap的源码中,在构造方法中调用了该方法 而isNaN()是Float类和Double类都有的一个静态方法,意思是判断输入的参数是否是一个NaN值. 方法体就只有一条语 ...

  4. Runtime error: expected scalar type Float but found Double

    错误:Runtime error: expected scalar type Float but found Double w_true=torch.tensor([2,-3.4]).T b_true ...

  5. python compare()_Python Decimal compare()用法及代码示例

    Decimal#compare():compare()是一个Decimal类方法,它比较两个Decimal值. 用法:Decimal.compare() 参数:十进制值 返回: 1 –如果a> ...

  6. 【论文写作】如何表示比较关系, compare to OR compare with?

      在论文写作过程中,经常会遇到两种方法或两个结果之间的比较,那么应该怎么准确灵活的表达比较关系呢?常见的表达方式是compare to 和 compare with,但二者还是有很大区别的. &qu ...

  7. double compare 0

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

  8. java的compare to(),java – compare()和compareTo()之间有什么区别?

    从 JavaNotes: > a.compareTo(b): 可比较的接口:比较值并返回一个int,它告诉这些值是否小于,等于或大于. 如果你的类对象有一个自然的顺序,实现Comparable& ...

  9. 单精度(float) 双精度 (double) 区别

    含义:表明单精度和双精度精确的范围不一样. 单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位: 双精度(double)在计算机中存储占用8字节,64位,有效位数为16位. ...

最新文章

  1. ACM——常用函数总结
  2. emeditor利用书签功能导出匹配结果到新文件
  3. MFC 错误异常,用vs添加资源并为资源定义类后报错:error C2065 : 未声明的标识符...
  4. 史上最全的分词算法与工具介绍
  5. matlab2008设置子函数断点无效,程序不在断点处停止
  6. 多智能体强化学习MAPPO源代码解读
  7. lsass.exe是什么?
  8. HIT 软件构造 软件维护 设计原则
  9. SwiftUI HealthKit 基础教程
  10. 互联网寒冬的思考,程序员该如何突破瓶颈?
  11. Java DES 加密解密工具类实现
  12. 根据图像匹配实现鼠标自动点击
  13. poi处理office转pdf
  14. 中国锂电设备行业营状况分析及未来发展动向预测报告2022-2028年版
  15. 戴尔笔记本安装双系统(win10+ubuntu20.04)避坑记录
  16. datatables分页,排序,ajax请求等参数设置
  17. dva model数据管理
  18. vue2中provide/inject的使用和响应式传值
  19. linux刷新屏幕命令是什么,linux重启刷新桌面方法教程
  20. 2021年机器人的工作量相当于全世界430万员工的工作

热门文章

  1. 小学三年级计算机基础知识教案,小学三年级信息技术教案画图.doc
  2. 2022春季数据结构期末考试总结
  3. 编程写作人员的好帮手 - Evernote 5.4(印象笔记) 中文绿色版
  4. 03UEc++【打飞艇:导弹与飞艇的碰撞事件】
  5. 软通动力笔试题 | 3月份跳槽求职高峰期,西边人给你准备了一份面试
  6. KunLun里的乾坤
  7. 钢笔墨水能否代替打印机墨水_UV打印机的墨水选择
  8. 单龙芯3A3000-7A1000PMON研究学习-(8)撸起袖子干-make tgt=rom初步分析(a)
  9. 电脑删除的照片如何恢复?
  10. 使用modbus4j通过串口解析modbus协议(java)