Java中double类型大小比较的五种方法
文章目录
- 1.使用BigDecimal
- 2.使用包装类Double
- 3.在误差范围内运行相等
- 4.转换成字符串
- 5.使用doubleToLongBits()方法
在Java中 int
类型数据的大小比较可以使用双等号, double
类型则不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以。下面介绍几种比较double数据是否相等的方法,前三种可以比较正负数,后两种方法只能用于比较两数是否想等以及正数的大小。
1.使用BigDecimal
//1.使用BigDecimal
String num1 = in.next();
String num2 = in.next();
BigDecimal bdL = new BigDecimal(num1);
BigDecimal bdR = new BigDecimal(num2);
if (bdL.compareTo(bdR) < 0)System.out.println("num1 < num2");
else if (bdL.compareTo(bdR) == 0)System.out.println("num1 == num2");
elseSystem.out.println("num1 > num2");
注意:
BigDecimal
可以使用字符串和 double
类型创建对象,并且建议使用字符串创建,因为在看起来数字相等的情况下,使用字符串的精度更高。
2.使用包装类Double
//2.使用包装类Double
Double dL = num1;
Double dR = num2;
if (dL.compareTo(dR) < 0)System.out.println("num1 < num2");
else if (dL.compareTo(dR) == 0)System.out.println("num1 == num2");
elseSystem.out.println("num1 > num2");
3.在误差范围内运行相等
//3.两实数的差在允许的范围内认为相等既可认为是相等的
if (num1 - num2 > 0.000001)System.out.println("num1 > num2");
else if (num1 - num2 < -0.0000001)System.out.println("num1 < num2");
elseSystem.out.println("num1 == num2");
4.转换成字符串
可以将double
数据转换成string
然后借助string
的compareTo
方法来间接实现比较两个double
数据是否相等。注意这种方法只适用于比较精度相同的数据,并且是只能用于比较正数的大小,负数比较结果异常,不过可以用于比较两数是否相等,此时正负数对结果没有影响。
//4.转换成字符串
String strL = String.valueOf(num1);
String strR = String.valueOf(num2);
if (strL.compareTo(strR) < 0)System.out.println("num1 < num2");
else if (strL.compareTo(strR) == 0)System.out.println("num1 == num2");
elseSystem.out.println("num1 > num2");
5.使用doubleToLongBits()方法
使用sun提供的Double.doubleToLongBits()方法,该方法可以将double转换成long型数据,从而可以使double按照long的方法(<, >, ==)判断是否大小和是否相等,但是,这种办法还是只能用于比较正数,负数结果异常,比较两数相等与否是没有问题的。
//4.使用使用sun提供的Double.doubleToLongBits()方法
long lL = Double.doubleToRawLongBits(num1);
long lR = Double.doubleToRawLongBits(num2);
if (lL < lR)System.out.println("num1 < num2");
else if (lL == lR)System.out.println("num1 == num2");
elseSystem.out.println("num1 > num2");
Java中double类型大小比较的五种方法相关推荐
- Java中Double保留自定义小数位的几种方法
Java中Double保留自定义小数位的几种方法 在Java语言编程中我们有时候会有保留指定小数位的需求,那应该如何操作呢,下面带来几种方法:(这里的所有方法以保留两位小数位为例) 一. 四舍五入并保 ...
- java中double类型精度丢失问题及解决方法
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源: https://blog.csdn.net/yacolsp ...
- Java中Double保留后小数位的几种方法
返回double型的 1.能四舍五入1 double d = 114.145; 2 d = (double) Math.round(d * 100) / 100; 3 System.out.print ...
- 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中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- Java中double类型比较大小或相等的方法
在Java中int类型数据的大小比较可以使用双等号,double类型则不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以.下面介绍两种比较double数据是 ...
- 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类型 ...
最新文章
- 江湖又现中科大少年班的传说
- Android Toast自己定义Toast例子
- 详谈分布式系统缓存的设计细节
- 硅谷半夜3点惊现无人驾驶特斯拉!百公里时速飞驰,交警围追10公里才逼停
- Java™ 教程(不可变对象)
- Crawler 爬虫
- apache高性能配置
- php redis 里面的hscan 第四个参数count很不靠谱
- 16qam星座图 matlab,16qam星形和矩形星座图调制解调matlab代码.doc
- Java中URI 和 URL 的区别
- Fuzzy analytic hierarchy process(模糊层次分析法)论文学习
- Win10任务栏100%透明怎么设置?Win10任务栏100%透明设置教程
- 根据手机指南针经纬度在地图上找到其位置
- (纯前台)读取、解析并展示xls/xlsx
- Python引用pymssql模块打包报错的解决方法
- 东芝TC358775XBG转换芯片:MIPI转LVDS(单/双路),替代ICN6202芯片
- 海康摄像头与萤石云web集成记录
- 桌面中计算机作用,云桌面技术在计算机机房管理中的作用研究
- 手机端也能免费查看CAD图纸啦!
- 工控计算机系统,工控电脑装什么系统好