Java中double类型比较大小或相等的方法
在Java中int类型数据的大小比较可以使用双等号,double类型则不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以。下面介绍两种比较double数据是否相等的方法。
第一种方法:转换成字符串
如果要比较的两个double数据的字符串精度相等,可以将数据转换成string然后借助string的equals方法来间接实现比较两个double数据是否相等。注意这种方法只适用于比较精度相同的数据,并且是只用用于比较是否相等的情况下,不能用来判断大小。
第二种方法:使用sun提供的Double.doubleToLongBits()方法
该方法可以将double转换成long型数据,从而可以使double按照long的方法(<, >, ==)判断是否大小和是否相等。
例如:
[java] view plain copy
- Double.doubleToLongBits(0.01) == Double.doubleToLongBits(0.01)
- Double.doubleToLongBits(0.02) > Double.doubleToLongBits(0.01)
- Double.doubleToLongBits(0.02) < Double.doubleToLongBits(0.01)
第三种方法:
double a = 0.001;
double b = 0.0011;
BigDecimal data1 = new BigDecimal(a);
BigDecimal data2 = new BigDecimal(b);
data1.compareTo(data2)
非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型!
public int compareTo(BigDecimal val)
将此 BigDecimal 与指定的 BigDecimal 比较。根据此方法,值相等但具有不同标度的两个 BigDecimal 对象(如,2.0 和 2.00)被认为是相等的。相对六个 boolean 比较运算符 (<, ==, >, >=, !=, <=) 中每一个运算符的各个方法,优先提供此方法。建议使用以下语句执行上述比较:(x.compareTo(y) <op> 0),其中 <op> 是六个比较运算符之一。
指定者:
接口 Comparable<BigDecimal>
中的 compareTo
参数:
val
- 将此 BigDecimal 与之比较的 BigDecimal。
返回:
当此 BigDecimal 在数字上小于、等于或大于 val 时,返回 -1、0 或 1。
第四种方法:
两实数相等:两实数的差在允许的范围内认为相等既可认为是相等的。
范围:1e-6(0.000001)
主要代码:
int IsEqual(double a,double b)
{return fabs(a-b) < 0.000001;
}
Java中double类型比较大小或相等的方法相关推荐
- java中double类型精度丢失问题及解决方法
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源: https://blog.csdn.net/yacolsp ...
- Java中double类型比较大小
Double.doubleToLongBits(0.01) == Double.doubleToLongBits(0.01) Double.doubleToLongBits(0.02) > Do ...
- Java中double类型输出小数点后两位
Java中double类型输出小数点后两位 思路 就是在输出的时候使用字符串格式即可. double testNum=1.123456789;System.out.println(String.for ...
- java double 转string_double转string java中double类型如何转换为String类型
double转string java中double类型如何转换为String类型 在我们做的项目中,有一个字符串的生成,我们需要double去拼接,结果发现了,拼接后的字符串,那个double值用科学 ...
- Java中Double保留自定义小数位的几种方法
Java中Double保留自定义小数位的几种方法 在Java语言编程中我们有时候会有保留指定小数位的需求,那应该如何操作呢,下面带来几种方法:(这里的所有方法以保留两位小数位为例) 一. 四舍五入并保 ...
- Java中double类型大小比较的五种方法
文章目录 1.使用BigDecimal 2.使用包装类Double 3.在误差范围内运行相等 4.转换成字符串 5.使用doubleToLongBits()方法 在Java中 int类型数据的大小比较 ...
- java中double类型占几个字节_java中各种数据类型占用字节数
1字节(Byte)=8bit java的基本类型 类型 所占字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 String中字母和汉字所占字 ...
- double operator[](int i)_java中double类型精度丢失问题及解决方法
原文链接:https://blog.csdn.net/yacolspace/article/details/78287394 double类型数据加减操作精度丢失问题 今天在项目中用到double类型 ...
- java中double类型占几个字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...
认识基本数据类型 在学习基本数据类型之前,我们先认识一下这两个单词:1.bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为"0"或"1&quo ...
最新文章
- sqlserver 批量插入数据(此方式同样适用mysql)
- 关于“System.Data.ProviderIncompatibleException”类型的异常
- 算法-----两数之和 II - 输入有序数组
- 没有对“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files”的写访问权限...
- SPOJ 27020 	GST Calculator
- 如何选择汽车LiDAR的激光器和光电探测器
- lucene源码分析(6)Query分析
- python暂停和恢复_python-线程的暂停, 恢复, 退出
- 如何不使用Java 8默认方法
- hibernate 封装 2008-11-12 17:21 (分类:默认分类)
- mds算法 java_对OAF开发中的MDS的初步研究(转)
- 不虚此行!OpenStack 温哥华峰会参会分享值得收藏
- idea主题插件网址
- 电气版CAD学习笔记
- 全球及中国石头纸行业发展动态与投资现状分析报告2022版
- c语言两个字符串比较,将两个字符串s1和s2比较,如果s1s2,作业 - 编一个程序,将两个字符串s1和s2比较,如果.doc...
- 智慧工厂之化工厂人员定位系统,工厂实时定位,视频联动-新导智能
- 为什么微信连接不上服务器失败怎么回事啊,微信为什么一直提示连接失败请检查网络设置...
- 2021年国企、银行求职面经汇总(更新中)
- Android中的优化问题
热门文章
- 浅谈IT从业人员与“反脆弱”的职业思考
- c语言 用getchar和putchar实现字符串的输入输出
- 小程序技术在软件供应链安全也能帮得上忙?
- 计算机怎么删除手机密码,手机锁屏密码忘记,要怎么清除锁屏密码?
- 使用二重积分来求旋转体的体积
- Cocos2d-x 4.0 安装教程(Windows10 + Visual Studio 2019)
- 一个屌丝程序猿的人生(三十三)
- 六问解密慢公司:豆瓣到底是什么?(转 chinaz)
- 传智播客 传智播客.NET视频学习课件
- 端午将至,VR全景奉上别开生面的“云上”端午节