文章目录

  • 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. 一个苹果证书供多台电脑开发使用——导出p12文件
  2. 《数学之美》第11章 如何确定网页和查询的相关性
  3. Windows 7 开发系列汇总
  4. 【Cocosd2d实例教程二】地图编辑器Tiled的安装使用
  5. 没有互联网,我不会写程序了
  6. java注册中心nacos_spring-cloud整合nacos做注册中心
  7. Angular安装教程
  8. ansible+ssh自动化运维
  9. POJ 1088 滑雪 (动规)
  10. 灰度图像加性噪声污染和运动模糊图像复原
  11. 函数式编程基础---高阶函数和偏函数
  12. spring mvc 返回json的配置
  13. 电工电子技术知识点总结(正弦交流电路)
  14. 软件定义无线电的实时频谱分析仪相关原理介绍(二)——射频,中频和基带信号
  15. Exploring Complementary Strengths of Invariant and Equivariant Representations for Few-Shot Learning
  16. NoSQLBooster for MongoDB软件使用
  17. DRV_03_编写最简单的触摸屏驱动程序_基于QEMU
  18. PCL——简单点云可视化
  19. 数据预处理部分的思维导图
  20. python 对比matlab_全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

热门文章

  1. 我为什么要进国企----HP大中华区总裁孙振耀退休感言
  2. 小程序模板真机调试和预览白屏
  3. Linux Command snap 包管理
  4. rust默认赋值的方法
  5. 多发电,选阳光:阳光家庭光伏重装启程
  6. swif 嵌套数据自带解析
  7. ZWAVE Alarm Report Command
  8. Z-Wave Multi Channel Basics zwave多功能复合设备实现
  9. 数字工厂中的SCADA(数据采集与监控系统)
  10. 这些黑白老照片在她手里宛若新生