Java float型数据判断是否相等
计算机表示浮点数(float或double类型)都有一个精度限制,对于超出了精度限制的浮点数,计算机会把它们的精度之外的小数部分截断。因此,本来不相等的两个浮点数在计算机中可能就变成相等的了。例如:
float a=10.222222225,b=10.222222229
数学上a和b是不相等的,但是用“==”符号比较时是相等的。
用如下的代码进行校验:
1 public class Test{ 2 public static void main(String[] args){ 3 isEqualOfFloat(10.222222225f, 10.222222229f); 4 } 5 6 public static void isEqualOfFloat(float a, float b){ 7 System.out.println("-------使用“==”符号比较是否相等:" + (a==b)); 8 System.out.println("-------使用“Math.abs()”方法比较是否相等:" + (Math.abs(a-b)>0) ); 9 System.out.println("-------使用“Math.abs()”方法比较是否相等(比较宽容的限制):" + (Math.abs(a-b)<0.00000001) ); 10 System.out.println("-------比较大小“<”:" + (a<b)); 11 System.out.println("-------比较大小“>”:" + (a>b)); 12 } 13 }
执行结果如下图:
因此一般不会直接用“==”或者“!=”对两个浮点数进行比较。判断两个浮点数是否相等可以根据他们的差的绝对值是否大于0来进行判断。
Math.abs(a-b)==0
考虑到实际应用,一般如果两个浮点数之差的绝对值小于或等于某一个可接受的误差(即精度,比如0.00000001即可),就认为它们是相等的。
Math.abs(a-b)<0.00000001
转载于:https://www.cnblogs.com/amunote/articles/float%e5%88%a4%e6%96%ad%e6%98%af%e5%90%a6%e7%9b%b8%e7%ad%89.html
Java float型数据判断是否相等相关推荐
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutputStream用法)
Java字节序 http://origin100.iteye.com/blog/267165 /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络 ...
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系
Java字节序 http://origin100.iteye.com/blog/267165 /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络 ...
- java byte(字节_Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutpu......
/** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络程序进行通讯时,需要进行相应的转换 * 高.低字节之间的转换 * windows的字节序为低字 ...
- 将float型数据转化成int型
在将float型数据转化成int数据前,首先我们要了解float型数据在内存中的存储方式,float类型在内存中占4个字节32个比特位,如下: 0 00000000 000000000000000 ...
- java float 加法_Java-杂项:Float 加减精度问题
java float 加减精度问题 在取这个字段的时候转换成BigDecimal就可以了 同时,BigDecimal是可以设置精度的. float m = 12.22F; float c = 1.22 ...
- java虚拟机如何判断两个类相同_你有没有想过: Java 虚拟机是如何判断两个对象是否相同的?判断的流程是什么?...
在Java程序运行时,会产生那么多的对象,那 Java 虚拟机是如何判断两个对象是否相同的呢?判断的流程是什么? 参考解答: Java 虚拟机会先判断两个对象的hashCode是否相同,如果hashC ...
- 网络编程中使用float型数据要注意
2019独角兽企业重金招聘Python工程师标准>>> 在网络编程中使用float型数据要特别注意,因为各个机器对浮点数的表示极有可能会不一样,比如在gsoap中,当在客户机和服务器 ...
- 串口 接收端_嵌入式系统串口传输int float型数据的处理
在做嵌入式系统通信时往往会用到串口,包括嵌入式系统将数据传输给PC,或者是嵌入式系统之间进行数据传输,这时候就会遇到发送数据的问题. 我们知道单片机通过串口发送数据时往往是一次一个字节(8位),如果传 ...
- 【Java】奇偶数判断
[Java]奇偶数判断 需求 编写方法,判断一个数是奇数还是偶数 代码 package com.cxl.demo27;import java.util.Scanner;//奇偶数判断 public c ...
最新文章
- 独家 | 可预测COVID-19病例峰值的新算法
- 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)
- linux usb初始化
- 无密码身份验证:安全、简单且部署快速
- 面向对象三大特性 -- 继承,封装,多态
- 剑指Offer10- II. 青蛙跳台阶问题
- axure html 360安装扩展,小编搞定win7系统360浏览器添加Axure扩展的设置方案
- hbase sqoop 实验_SQOOP安装及使用-实验
- word转pdf出现空白页||去除PDF中的指定页
- Android TV 开发 (1)
- CSV Converter Pro for Mac(CSV数据转换工具)
- WinRAR 去除广告
- ddr4单颗粒最大_国产内存来了:长鑫发布DDR4/LPDDR4X内存
- 《视觉SLAM十四讲-第二版-ch8,OpenCV4报错及解决》
- 浏览器图标及名称大全_估计真要卸载谷歌浏览器了!自带黑科技浏览器推荐(下)...
- 详解线上线下收单业务(2)
- 关于MATLAB直方图的绘制及应用
- Java Rasp技术浅析
- 毕业设计--20200301--domoticz的智能家居设备---esp8266(micropython)+MQTT 做一个可控开关
- 基于OpenStack的云计算平台搭建