Float.compare()和Double.compare()的使用
文章目录
- 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()的使用相关推荐
- 关于 Double.compare()
使用<和>对浮点数进行比较时,不够严谨,有这两个问题:0.0.-0.0的比较问题(0.0 > -0.0),以及NaN的问题(NaN永远比!NaN大),建议使用Double.compa ...
- null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外) 转载于:https://www.cnblogs.com/zhenmi ...
- Java高级之Float类和Double类的isNaN()方法
遇到这个问题,最开始是在HashMap的源码中,在构造方法中调用了该方法 而isNaN()是Float类和Double类都有的一个静态方法,意思是判断输入的参数是否是一个NaN值. 方法体就只有一条语 ...
- 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 ...
- python compare()_Python Decimal compare()用法及代码示例
Decimal#compare():compare()是一个Decimal类方法,它比较两个Decimal值. 用法:Decimal.compare() 参数:十进制值 返回: 1 –如果a> ...
- 【论文写作】如何表示比较关系, compare to OR compare with?
在论文写作过程中,经常会遇到两种方法或两个结果之间的比较,那么应该怎么准确灵活的表达比较关系呢?常见的表达方式是compare to 和 compare with,但二者还是有很大区别的. &qu ...
- double compare 0
因为double类型或float类型都是有精度的,其实都是取的近似值,所以有个误差.和一个很小的数比如0.00000001(1e-8)比较就是为了在这个误差范围内进行比较. 举个例子如double b ...
- java的compare to(),java – compare()和compareTo()之间有什么区别?
从 JavaNotes: > a.compareTo(b): 可比较的接口:比较值并返回一个int,它告诉这些值是否小于,等于或大于. 如果你的类对象有一个自然的顺序,实现Comparable& ...
- 单精度(float) 双精度 (double) 区别
含义:表明单精度和双精度精确的范围不一样. 单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位: 双精度(double)在计算机中存储占用8字节,64位,有效位数为16位. ...
最新文章
- ACM——常用函数总结
- emeditor利用书签功能导出匹配结果到新文件
- MFC 错误异常,用vs添加资源并为资源定义类后报错:error C2065 : 未声明的标识符...
- 史上最全的分词算法与工具介绍
- matlab2008设置子函数断点无效,程序不在断点处停止
- 多智能体强化学习MAPPO源代码解读
- lsass.exe是什么?
- HIT 软件构造 软件维护 设计原则
- SwiftUI HealthKit 基础教程
- 互联网寒冬的思考,程序员该如何突破瓶颈?
- Java DES 加密解密工具类实现
- 根据图像匹配实现鼠标自动点击
- poi处理office转pdf
- 中国锂电设备行业营状况分析及未来发展动向预测报告2022-2028年版
- 戴尔笔记本安装双系统(win10+ubuntu20.04)避坑记录
- datatables分页,排序,ajax请求等参数设置
- dva model数据管理
- vue2中provide/inject的使用和响应式传值
- linux刷新屏幕命令是什么,linux重启刷新桌面方法教程
- 2021年机器人的工作量相当于全世界430万员工的工作
热门文章
- 小学三年级计算机基础知识教案,小学三年级信息技术教案画图.doc
- 2022春季数据结构期末考试总结
- 编程写作人员的好帮手 - Evernote 5.4(印象笔记) 中文绿色版
- 03UEc++【打飞艇:导弹与飞艇的碰撞事件】
- 软通动力笔试题 | 3月份跳槽求职高峰期,西边人给你准备了一份面试
- KunLun里的乾坤
- 钢笔墨水能否代替打印机墨水_UV打印机的墨水选择
- 单龙芯3A3000-7A1000PMON研究学习-(8)撸起袖子干-make tgt=rom初步分析(a)
- 电脑删除的照片如何恢复?
- 使用modbus4j通过串口解析modbus协议(java)