浮点类型使用陷阱

news2024/9/22 19:29:55

引言

当我们进行条件判断时,经常会遇到两个数是否相等的情况,但如果在程序中进行判断一个可以除尽的小数和数学上除出来所得的数是否相等时,就会神奇的发型居然不相等??!

遇到问题

看如下代码

double num5 = 2.7;//2.7
		double num6 = 8.1 / 3;//接近2.7
		System.out.println(num5);
		System.out.println(num6);
		if(num5 == num6){
			System.out.println("相等");//输出失败
		}

输出居然是这样:

分析问题

出现了 2.7 != 8.1 / 3的情况.这段代码没有输出"相等"的原因是浮点数在计算机中的表示并不总是精确的。num6是通过8.1 / 3计算得到的,这个计算在理论上应该等于2.7,但由于浮点数的表示方式,计算结果可能会稍微偏离这个精确值。当你使用==操作符来比较两个浮点数时,你实际上是在比较它们内部的二进制表示是否完全相同。由于num5num6可能由于上述原因而有微小的差异,所以它们的二进制表示可能不完全相同,导致if(num5 == num6)的条件不满足。

解决问题

那么如何解决这个问题呢?

以两个数的差值的绝对值,在某个精度范围内判断

double num5 = 2.7;//2.7
		double num6 = 8.1 / 3;//接近2.7
		System.out.println(num5);
		System.out.println(num6);
		if(num5 == num6){
			System.out.println("相等");//输出失败
		}
		System.out.println(Math.abs(num5 - num6));
		if(Math.abs(num5 - num6) < 0.0001){
			System.out.println("差值小于规定精度,认为相等");//成功输出
		}

这样就输出成功了

总结:

当我们对运算结果是小数的进行相等判断时要小心
 应该以两个数的差值的绝对值,在某个精度范围内判断

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1915851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NAS免费用,鲁大师 AiNAS正式发布,「专业版」年卡仅需264元

7月10日&#xff0c;鲁大师召开新品发布会&#xff0c;正式发布旗下以“提供本地Ai部署和使用能力以及在线NAS功能”并行的复合软件产品&#xff1a;鲁大师 AiNAS。 全新的鲁大师 AiNAS将持续满足现如今大众对于数字化生活的全新需求&#xff0c;将“云存储”的便捷与NAS的大容…

学圣学最终的目的是:达到思无邪的状态( 纯粹、思想纯正、积极向上 )

学圣学最终的目的是&#xff1a;达到思无邪的状态&#xff08; 纯粹、思想纯正、积极向上 &#xff09; 中华民族&#xff0c;一直以来&#xff0c;教学都是以追随圣学为目标&#xff0c;所以中华文化也叫圣学文化&#xff0c;是最高深的上等学问&#xff1b; 圣人那颗心根本…

如何配置yolov10环境?

本文介绍如何快速搭建起yolov10环境&#xff0c;用于后续项目推理、模型训练。教程适用win、linux系统 yolo10是基于yolo8&#xff08;ultralytics&#xff09;的改进&#xff0c;环境配置跟yolo8几乎一模一样。 目录 第1章节&#xff1a;创建虚拟环境 第2章节&#xff1a;…

tesla p100显卡显示资源不足,api调用失败

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

数据结构JAVA

1.数据结构之栈和队列 栈结构 先进后出 队列结构 先进先出 队列 2.数据结构之数组和链表 数组结构 查询快、增删慢 队列结构 查询慢、增删快 链表的每一个元素我们叫结点 每一个结点都是独立的对象

浅谈“不要卷模型,要卷应用”

目录 1.概述 2.AI技术应用场景探索 3.避免超级应用陷阱的策略 3.1.追求DAU的弊端 3.2.平衡用户活跃度与应用实用性的策略 4.个性化智能体开发 4.1. 用户需求分析与数据收集 4.2. 技术选择与开发 4.3. 个性化算法设计 4.4. 安全性与隐私保护 4.5. 多渠道集成与响应机…

《昇思25天学习打卡营第14天|计算机视觉-ShuffleNet图像分类》

FCN图像语义分割&ResNet50迁移学习&ResNet50图像分类 当前案例不支持在GPU设备上静态图模式运行&#xff0c;其他模式运行皆支持。 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端…

GraphGNSSLib Series[2]:在CLion中不同Node间进行debug

CLion实现Node debug 步骤&#xff1a; 我了解到的node&#xff0c;大多是通过终端运行&#xff0c;但是使用clion不断debug断点进行调试一直使我很苦恼&#xff0c;所以此次记录一下如何通过clion实现node节点之间通过publisher以及subscriber进行节点话题间的发布与通信&…

App H5+ 实现下载、查看功能 前后端实现(SpringBoot)

<!doctype html><html><head><meta charset"utf-8"><title>维修指南</title><meta name"viewport" content"widthdevice-width, initial-scale1.0, minimum-scale0, maximum-scale0.85, user-scalableyes&quo…

TotalSegmentator---针对CT/MRI数据的自动分割

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ&#xff1a;870202403 公众号&#xff1a;VTK忠粉 前言 本文分享开源软件TotalSegmentator&#xff0c;该开源项目针对CT/MRI数据类型&#xff0c;对主要的解剖学结构进行自动分割&#xff0c;并且被集成到MITK中。希望对各…

GB28181设备如何添加

简介 此篇描述视频网关&#xff08;中间件&#xff09;接入大华、海康、ONVIF设备&#xff08;NVR、摄像头&#xff09;、GB28181设备步骤和流程。 阅读本文档之前建议先阅览视频网关&#xff08;中间件&#xff09;用户使用手册。 接入方式和说明 视频网关&#xff08;中间…

为什么Windows操作系统一定要每年重装一次

在日常使用中&#xff0c;我们的电脑保存了无数的数据&#xff0c;安装和卸载程序&#xff0c;在这个过程中变得越来越慢&#xff0c;越来越容易出现问题。除了升级电脑硬件之外&#xff0c;有一个简单的办法可以让我们的电脑焕然一新&#xff1a;每年重新安装一次操作系统。 …

NFS综合项目

现有主机 node01 和 node02&#xff0c;完成如下需求&#xff1a; 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 node02 主机提供的NFS…

七人共赢拼团模式的深度剖析与互助精神重塑

在当今电商的浩瀚星海中&#xff0c;七人共赢拼团模式以其创新的合作框架与激励体系&#xff0c;正引领着消费与商业的新潮流。这一模式不仅优化了购物体验&#xff0c;更深刻诠释了互助共赢的核心理念。以下&#xff0c;我们将从直推奖励、自动补齐机制及团队荣耀奖三个方面&a…

Markdown+Sphinx+Read_the_Docs的一些技巧

MarkdownSphinxRead_the_Docs可以用来构建个人主页或知识教程&#xff0c;搭建方法网上很多&#xff0c;可以参考这个大佬的文章。本文主要讲述一些技巧&#xff0c;可以让项目更加完美。 本人运行环境是WSL2 Ubuntu 22.04&#xff0c;Sphinx版本是7.3.7 文章目录 一 工程搭建…

生物打印后的生物力学过程

生物打印后的生物力学过程 3D生物打印技术在组织工程领域展现出巨大的潜力&#xff0c;但打印后组织的生物力学特性对其最终成功至关重要。本文将详细介绍打印后组织的生物力学特性及其在组织工程中的应用。 1. 打印后水凝胶交联 原位交联可以在生物打印过程中提供足够的机械…

cdn中配置ssl证书

##red## &#x1f534; 大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff0c;雄雄的小课堂。 SSL KEY 这个里面放的是&#xff1a;private.pem文件中的内容 SSL PEM 这个里面放的是&#xff1a;fullchain.crt文件中的内容&#xff0c;注意&#xff0c;这个…

Python 100道基础入门练习题!附解析

看书&#xff0c;看视频都可以帮助你学习代码&#xff0c;但都只是辅助作用&#xff0c;学好 Python&#xff0c;最重要的还是 多敲代码&#xff0c;多刷题。 不知道怎么找题刷题的小伙伴&#xff0c;可以看看这里今天带来了100道练习题。覆盖了基本语法&#xff0c;数据结构&…

【JavaWeb程序设计】Servlet(一)

目录 一、客户端通过login.jsp发出登录请求&#xff0c;请求提交到loginServlet处理。 1. 运行截图 2. 登录页面&#xff08;login.jsp&#xff09; 3. loginServlet 4. 登录成功页面&#xff08;loginSuccess.jsp&#xff09; 5. 登录失败页面&#xff08;loginFail.jsp…

探索一个精美的商品橱窗布局:HTML与CSS的魔法

在今天的文章中&#xff0c;我们将一起探索一个精心设计的商品橱窗布局&#xff0c;这个布局完全通过HTML和CSS来实现。这个布局不仅美观&#xff0c;而且功能强大&#xff0c;非常适合用于展示商品或任何需要网格化布局的内容。 效果图&#xff1a; 一、HTML结构 首先&#…