浮点数比较大小问题

embedded/2025/2/28 5:51:33/
java">public static void main(String[] args) {double a = 413;double b = 0.4;double c = 165.2;System.out.println("a*b = " + a*b);System.out.println("a*b > c 的结果是:" + (a*b > c));}

输出:

a*b = 165.20000000000002
a*b > c 的结果是:true

发现不可以这样比较。做法如下

java">public static void main(String[] args) {double a = 413;double b = 0.4;double c = 165.2;BigDecimal aa = new BigDecimal(Double.toString(a));BigDecimal bb = new BigDecimal(Double.toString(b));BigDecimal cc = new BigDecimal(Double.toString(c));BigDecimal ratingPower04 = aa.multiply(bb).setScale(4, BigDecimal.ROUND_HALF_UP);System.out.println("a*b = " + ratingPower04);System.out.println("a*b > c 的结果是:" + (ratingPower04.compareTo(cc) > 0));
}

结果是:

a*b = 165.2000
a*b > c 的结果是:false

这里附上函数

java">/**** @param ratingPower 发动机额定功率* @param maxPower 轮边功率修正值* @return*/public static int isBig(Double ratingPower,Double maxPower){BigDecimal aa = new BigDecimal(Double.toString(ratingPower));BigDecimal bb = new BigDecimal(Double.toString(maxPower));BigDecimal cc = new BigDecimal(Double.toString( 0.4));BigDecimal ratingPower04 = aa.multiply(cc).setScale(4, BigDecimal.ROUND_HALF_UP);return ratingPower04.compareTo(bb);}


http://www.ppmy.cn/embedded/167729.html

相关文章

Nginx系列05(负载均衡、动静分离)

目录 Nginx 负载均衡 Nginx 动静分离 Nginx 负载均衡 概念:负载均衡是一种将网络流量分摊到多个后端服务器(节点)上的技术,以提高系统的可用性、性能和可扩展性。通过负载均衡,Nginx 可以根据一定的算法将客户端请求…

WiFi定位:宠物安全的“秘密武器”

从「全网寻狗」到「实时掌控」的进化史 凌晨三点收到邻居转发的「寻狗启事」,配图里的金毛犬项圈上赫然挂着某品牌定位器 —— 这样的魔幻场景在养宠圈并不罕见。随着宠物经济突破 3000 亿规模,智能定位器早已从「小众玩具」变成「刚需装备」。但你知道…

VScode中Markdown PDF无法正确输出包含数学公式的pdf解决方案

在使用VScode的Markdown PDF插件时,可能会遇到无法正确输出包含公式的PDF文件的问题。下面为你提供一种有效的解决方案。 具体操作步骤 步骤一:定位模板文件 在安装Markdown PDF插件后,你需要找到对应的模板文件。该文件的路径通常如下&am…

无人机自主导航与避障技术!

自主导航的实现 环境感知:通过传感器(如摄像头、激光雷达、超声波传感器等)获取周围环境信息。 地图构建:利用SLAM(同步定位与地图构建)技术,实时生成环境地图并确定无人机的位置。 路径规划…

字节火山引擎-大模型声音复刻,流式语音合成接口

字节火山引擎-大模型声音复刻,流式语音合成接口 参考文档:火山引擎-大模型声音复刻文档 官网给出的示例代码有bug,这里已经修改了 创建应用 声音复刻大模型页面查看应用,获取接口调用需要的参数 注意调用tts接口时候需要三个参数…

智能测试执行 利用算法 利用图像识别、自然语言处理等技术实现自动化测试执行

以下将从Web应用和移动应用两个方面,给出利用图像识别、自然语言处理等技术实现自动化测试执行的实例,并附上部分代码示例。 Web应用自动化测试实例:模拟用户登录操作测试 需求理解 对于一个Web应用的登录功能进行自动化测试,我们可以结合自然语言处理理解测试用例描述,…

CAS (Compare and swap “比较和交换“) [ Java EE 初阶 ]

目录 什么是 CAS CAS 是怎么实现的 CAS 有哪些应用 1. 实现原子类 2. 实现自旋锁 3. CAS 的 ABA 问题 什么是 CAS // 能够比较和交换某个寄存器中的值和内存中的值, 看是否相等, 如果相等, 则把另一个寄存器中的值和内存中的值进行交换 // CAS伪代码 boolean CAS(addres…

GitHub SSH连接问题解决指南

🔍 GitHub SSH连接问题解决指南 问题描述 遇到错误:ssh: connect to host github.com port 22: Connection refused 说明您的网络环境无法访问GitHub的SSH端口22,常见原因: 防火墙/网络运营商限制(国内常见&#xf…