news 2026/2/26 12:17:26

Java:Double类型数据比较

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java:Double类型数据比较

在Java中,直接使用==运算符比较double类型数据存在精度问题,因为浮点数的二进制表示可能导致舍入误差。
1. ‌基于容差(epsilon)的比较‌

推荐使用容差值(epsilon)来判断两个double是否“相等”:
public static boolean areDoublesApproximatelyEqual(double d1, double d2, double epsilon) {
return Math.abs(d1 - d2) < epsilon;
}

‌优点‌:适用于需要高精度比较的场景,如金融计算。
‌使用示例‌:
double epsilon = 0.000001; // 根据需求调整
System.out.println(areDoublesApproximatelyEqual(0.01, 0.010001, epsilon)); // true

2. ‌转换为BigDecimal比较‌

适用于需要精确比较的场景:
BigDecimal bd1 = new BigDecimal("0.01");
BigDecimal bd2 = new BigDecimal("0.010001");
System.out.println(bd1.compareTo(bd2) == 0); // false

‌优点‌:完全避免浮点数精度问题,但性能稍低。
‌适用场景‌:金额计算、科学计算等对精度要求高的领域。

3. ‌使用Double.doubleToLongBits()‌

适用于比较大小:
System.out.println(Double.doubleToLongBits(0.01) == Double.doubleToLongBits(0.01)); // true

‌优点‌:直接比较底层二进制表示,性能高。
‌适用场景‌:需要快速判断大小关系。

4. ‌避免直接使用==‌
double a = 0.01;
double b = 0.01;
System.out.println(a == b); // 可能返回false

‌风险‌:由于舍入误差,直接比较可能返回意外结果。

总结

‌精度比较‌:优先使用容差比较或BigDecimal。
‌大小比较‌:使用Double.doubleToLongBits()或compareTo()。
‌避免‌:直接使用==比较浮点数。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/16 14:21:58

Plum 完整指南:Rime 输入法配置管理的终极解决方案

Plum 完整指南&#xff1a;Rime 输入法配置管理的终极解决方案 【免费下载链接】plum 東風破 /plum/: Rime configuration manager and input schema repository 项目地址: https://gitcode.com/gh_mirrors/pl/plum Plum 是专为 Rime 输入法引擎设计的强大配置管理工具&…

作者头像 李华
网站建设 2026/2/23 2:03:44

LZ4极速压缩终极指南:如何实现毫秒级数据处理

LZ4极速压缩终极指南&#xff1a;如何实现毫秒级数据处理 【免费下载链接】lz4 Extremely Fast Compression algorithm 项目地址: https://gitcode.com/GitHub_Trending/lz/lz4 在现代数据处理场景中&#xff0c;LZ4压缩算法以其惊人的速度和效率成为业界标杆。这款高性…

作者头像 李华
网站建设 2026/2/24 15:41:21

2026毕设ssm+vue基于疫情防控的物资管理与发放系统论文+程序

本系统&#xff08;程序源码&#xff09;带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景 关于突发公共卫生事件中物资保障问题的研究&#xff0c;现有研究主要以宏观层面的应急物流、供应链协同及政策建议为主&#…

作者头像 李华
网站建设 2026/2/26 0:49:46

SMP语言基础知识-应用系统,个人开发者的痛点(2)

接上篇 SMP语言基础知识-应用系统&#xff0c;个人开发者的痛点&#xff08;1&#xff09; 三、技术的痛点 1、 吃技术老本 个人开发者出来创业一般都是高手&#xff0c;而高手的特点就是有技术专长。这个长处当然是长处&#xff0c;但是&#xff0c;也可能变为短处&#xff0c…

作者头像 李华
网站建设 2026/2/16 20:40:42

Screen to Gif时间轴编辑功能深度剖析

让 GIF 会说话&#xff1a;Screen to Gif 时间轴编辑的实战智慧你有没有过这样的经历&#xff1f;录完一段操作演示&#xff0c;回放时却发现动画太快、细节看不清&#xff0c;或者中间夹杂着一堆静止画面&#xff0c;节奏像卡顿的幻灯片。这时候&#xff0c;一个能“精雕细琢”…

作者头像 李华