文章目录

  • 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然后借助stringcompareTo方法来间接实现比较两个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类型大小比较的五种方法相关推荐

  1. Java中Double保留自定义小数位的几种方法

    Java中Double保留自定义小数位的几种方法 在Java语言编程中我们有时候会有保留指定小数位的需求,那应该如何操作呢,下面带来几种方法:(这里的所有方法以保留两位小数位为例) 一. 四舍五入并保 ...

  2. java中double类型精度丢失问题及解决方法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源: https://blog.csdn.net/yacolsp ...

  3. Java中Double保留后小数位的几种方法

    返回double型的 1.能四舍五入1 double d = 114.145; 2 d = (double) Math.round(d * 100) / 100; 3 System.out.print ...

  4. Java中double类型输出小数点后两位

    Java中double类型输出小数点后两位 思路 就是在输出的时候使用字符串格式即可. double testNum=1.123456789;System.out.println(String.for ...

  5. java double 转string_double转string java中double类型如何转换为String类型

    double转string java中double类型如何转换为String类型 在我们做的项目中,有一个字符串的生成,我们需要double去拼接,结果发现了,拼接后的字符串,那个double值用科学 ...

  6. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  7. Java中double类型比较大小或相等的方法

    在Java中int类型数据的大小比较可以使用双等号,double类型则不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以.下面介绍两种比较double数据是 ...

  8. java中double类型占几个字节_java中各种数据类型占用字节数

    1字节(Byte)=8bit java的基本类型 类型 所占字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 String中字母和汉字所占字 ...

  9. double operator[](int i)_java中double类型精度丢失问题及解决方法

    原文链接:https://blog.csdn.net/yacolspace/article/details/78287394 double类型数据加减操作精度丢失问题 今天在项目中用到double类型 ...

最新文章

  1. 江湖又现中科大少年班的传说
  2. Android Toast自己定义Toast例子
  3. 详谈分布式系统缓存的设计细节
  4. 硅谷半夜3点惊现无人驾驶特斯拉!百公里时速飞驰,交警围追10公里才逼停
  5. Java™ 教程(不可变对象)
  6. Crawler 爬虫
  7. apache高性能配置
  8. php redis 里面的hscan 第四个参数count很不靠谱
  9. 16qam星座图 matlab,16qam星形和矩形星座图调制解调matlab代码.doc
  10. Java中URI 和 URL 的区别
  11. Fuzzy analytic hierarchy process(模糊层次分析法)论文学习
  12. Win10任务栏100%透明怎么设置?Win10任务栏100%透明设置教程
  13. 根据手机指南针经纬度在地图上找到其位置
  14. (纯前台)读取、解析并展示xls/xlsx
  15. Python引用pymssql模块打包报错的解决方法
  16. 东芝TC358775XBG转换芯片:MIPI转LVDS(单/双路),替代ICN6202芯片
  17. 海康摄像头与萤石云web集成记录
  18. 桌面中计算机作用,云桌面技术在计算机机房管理中的作用研究
  19. 手机端也能免费查看CAD图纸啦!
  20. 工控计算机系统,工控电脑装什么系统好

热门文章

  1. cloudflare 缓存 html,cloudflare无限流量缓存的使用方法
  2. EditText取消默认焦点
  3. Power BI十大视觉效果,知多少?
  4. 如何优雅的在word里插入代码
  5. 使用adb命令行查看当前Fragment情况
  6. 低代码,是个伪命题吗?
  7. 1119. 删去字符串中的元音
  8. eventhandler java_如何使用typescript创建EventHandler类?
  9. 经纬财富:通化现货白银投资技巧—左右侧交易
  10. Timeline 时间线 数据处理