三菱整数乘法出现小数点的原因分析 以及工程设置

article/2025/6/25 9:58:26

 三菱 PLC 中出现30*1000=29999.994的计算误差,主要与浮点数在计算机中的二进制表示方式有关。以下是详细解释和解决方案:
原因分析
浮点数二进制存储的精度限制
浮点数(如三菱 PLC 使用的 IEEE 754 单精度浮点数)在计算机中以二进制形式存储,无法精确表示所有十进制小数。例如,某些十进制小数会转换为无限循环的二进制小数,导致舍入误差。
舍入误差的累积
乘法运算可能放大这种误差。当两个浮点数相乘时,中间结果可能超出精度范围,最终导致结果偏离预期。
浮点数比较的陷阱
直接比较浮点数是否 “等于” 某个值(如29999.994 == 30000)通常是不可靠的,因为即使微小的误差也会导致比较失败。
解决方案
1. 使用整数运算替代浮点数
如果精度要求高,尽量使用整数运算。例如:
plaintext
// 原错误计算:30.0 * 1000.0(浮点数)
// 修正为:30 * 1000(整数)
// 结果:30000(无误差)

2. 调整浮点数精度
如果必须使用浮点数,可通过以下方式减少误差:
设置容差值(Epsilon):在比较浮点数时,允许一个极小的误差范围。例如:
plaintext
// 判断两个浮点数是否“近似相等”
if (|A - B| < 0.001) {
   // A和B在误差范围内相等
}

四舍五入处理结果:在显示或使用结果前,将浮点数舍入到所需精度。
3. 检查 PLC 程序中的数据类型
确保参与运算的变量均为浮点数类型(如三菱 PLC 中的D寄存器 + 浮点数指令)。
避免在整数和浮点数之间频繁转换,可能导致额外的精度损失。
4. 优化运算顺序
对于复杂计算,调整运算顺序以减少误差累积。例如,先进行除法再乘法,可能比先乘后除更精确。
示例代码(三菱 FX 系列 PLC)
以下是使用整数运算替代浮点数的示例:
plaintext
// 错误示例:浮点数运算
LD D0      // 假设D0=30.0(浮点数)
MUL D2     // 假设D2=1000.0(浮点数)
OUT D4     // 结果:D4=29999.994

// 正确示例:整数运算
LD K30     // 30(整数)
MUL D100   // 假设D100=1000(整数)
OUT D102   // 结果:D102=30000(无误差)
总结


http://www.hkcw.cn/article/krwRpkPPlx.shtml

相关文章

Git 第三讲---核心篇 git的远程管理

前言&#xff1a; 在上一讲《Git 第二讲 — 提高篇&#xff1a;Git的分支管理》中&#xff0c;我们掌握了如何通过分支实现代码的并行开发&#xff0c;学会了创建、切换、合并分支以及解决冲突的核心技巧。分支管理是Git强大功能的基石&#xff0c;但它更多聚焦于本地仓库的操…

Java网络编程API 1

Java中的网络编程API一共有两套&#xff1a;一套是UDP协议使用的API&#xff1b;另一套是TCP协议使用的API。这篇文章我们先来介绍UDP版本的API&#xff0c;并尝试来写一个回显服务器&#xff08;接收到的请求是什么&#xff0c;返回的响应就是什么&#xff09;。 UDP数据报套…

window ollama部署模型

注意去官网下载ollama,这个win和linux差别不大,win下载exe,linux用官网提供的curl命令 模型下载表:deepseek-r1 使用命令:Ollama API 交互 | 菜鸟教程 示例: 1.查看已加载模型: 2.文本生成接口 curl -X POST http://localhost:11434/v1/completions -H "Conte…

MySQL安装及启用详细教程(Windows版)

MySQL安装及启用详细教程&#xff08;Windows版&#xff09; &#x1f4cb; 概述 本文档将详细介绍MySQL数据库在Windows系统下的下载、安装、配置和启用过程。 &#x1f4e5; MySQL下载 官方下载地址 官方网站: https://dev.mysql.com/downloads/社区版本: https://dev.my…

vscode中的markdown表格列宽

vscode中的markdown表格列宽 当然&#xff0c;这个问题在csdn中应该是没有的&#xff0c;csdn是自适应文档页面的。这个自适应在vscode中好像不太好实现&#xff0c;至少目前我没能实现。 表格生成如上图&#xff0c;缩在一起&#xff0c;当然也会随着表格中录入数据自适应…

CangjieMagic 智能体框架嵌入式系统实测:以树莓派 4B 为例

目录 引言 CangjieMagic 对嵌入式开发板的要求 编译环境准备 本地编译 交叉编译 实战测试 程序编写 对cjpm.toml文件的修改 运行结果 结束语 引言 在人工智能与物联网技术飞速发展的今天&#xff0c;嵌入式系统作为连接物理世界与数字世界的桥梁&#xff0c;承担着越…

数值与字典解决方案二十七讲:两列数据相互去掉重复值后合并

《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;字典是VBA的精华&#xff0c;我要求学员必学。7.1.3.9教程和手册掌握后&#xff0c;可以解决大多数工作中遇到的实际问题。…

林夏薇否认破产传闻,已发律师声明回应 正交律师处理

近期,TVB“视后”林夏薇被一家公司向香港高等法院申请破产。根据司法机构资料,案件延期至8月26日下午在高等法院提讯。对于破产一事,林夏薇回应称:“我丈夫Jason租住房子的公司有官司,正在上诉中,所以我莫名其妙,现在已交给律师处理,我也没有收到任何通知。”5月30日,…

下次放假安排已定可连休8天 国庆中秋合并假期

今天是端午节假期的最后一天,许多人已经开始期待下一次休假。根据国务院办公厅发布的2025年部分节假日安排通知,下一个长假将在四个月后的国庆节和中秋节期间。届时,国庆节与中秋节将合并放假,共8天。责任编辑:zx0176

24岁台大学霸暗网全球贩毒,3年海1亿多美元

24岁台大学霸暗网全球贩毒,3年海1亿多美元!据台媒报道,近日,美国联邦调查局(FBI)破获暗网毒品交易平台“隐身市场”,而该平台经营者“法老”的真实身份竟是24岁台湾大学资管系学生林睿庠。林睿庠因贩毒资产暴增,3年多其不法所得超过1亿美元(约7.2亿元人民币)。据悉,…

孙连城扮演者直播带货望远镜 从“宇宙区长”到带货主播

5月31日晚,曾在热播电视剧《人民的名义》中饰演“懒政区长孙连城”的演员李威,在短视频平台上开启直播带货,所售商品为天文望远镜。近一周内,李威已进行了三场关于望远镜的直播带货。6月1日上午,李威此前发布的带货直播预告视频疑似已被隐藏或删除,其商品橱窗中的天文望远…

互联网女皇340页AI报告猛料刷屏:AI增速创纪录

当地时间5月30日,玛丽米克尔发布了长达340页的“AI趋势报告”。报告指出,AI的发展速度前所未见,用户增长、使用量和资本支出均呈现出爆炸式增长,其影响力可能远超技术本身。玛丽米克尔是美国风险投资家,曾就职于摩根士丹利和凯鹏华盈,于2018年创立了自己的风投公司邦德资…

为何说中国“车圈恒大论”是误读 主流车企财务稳健

端午前夕,“车圈恒大论”再次成为业内焦点。5月30日,比亚迪集团品牌及公关处总经理李云飞通过社交媒体发布长文,首次正面回应被暗指为“汽车圈恒大”的流言,直言感觉好气又好笑,并列出财报数据逐一反驳,指出中国主流车企根本不存在所谓的“车圈恒大”。事情起源于前不久的…

关于免费版MQTT.fx 1.7.1下载与安装(附带下载链接)

MQTT.fx目前官网已经更新到5.x的版本&#xff0c;该版本需要付费使用&#xff0c;作为学习使用的话还是建议用免费的1.7.1版本&#xff0c;但是官网已经没有这个版本的安装包了&#xff0c;以下链接是我在网上找到的资料&#xff0c;该仓库仅用于学习交流&#xff0c;请勿用于商…

海外tk抓包简单暴力方式

将地址替换下面代码就可以 function hook_dlopen(module_name, fun) {var android_dlopen_ext Module.findExportByName(null, "android_dlopen_ext");if (android_dlopen_ext) {Interceptor.attach(android_dlopen_ext, {onEnter: function (args) {var pathptr …

编译原理实验 之 TINY 之 语义分析(第二次作业)

文章目录 本实验是接着前面的两个实验的基础上进行完善的&#xff0c;所以对于前面的实验如何操作&#xff1f;请看我的另外两个博客~ 编译原理 之 实验一 编译原理实验 之 Tiny C语言编译程序实验 语法分析 首先明确一下这次实验的任务&#xff1f; 主要目的&#xff1a;实现…

数组与元组:TypeScript 的基础

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

Transformer核心技术深度解析:多头注意力机制与架构精粹

一、多头注意力&#xff1a;模型理解的「多棱镜」 核心思想&#xff1a;并行化特征空间探索 传统注意力的局限&#xff1a;单一注意力机制如同单眼观察世界&#xff0c;只能捕捉单一维度的关联 多头机制的本质&#xff1a;为模型配备多组「认知透镜」&#xff0c;同时从不同子…

【C语言入门级教学】assert断⾔和指针的使用

文章目录 1.assert断⾔2.指针的使⽤和传址调⽤2.1 strlen的模拟实现2.2 传值调⽤和传址调⽤ 1.assert断⾔ assert.h 头⽂件定义了宏 assert() &#xff0c;⽤于在运⾏时确保程序符合指定条件&#xff0c;如果不符合&#xff0c;就报错终⽌运⾏。这个宏常常被称为“断⾔”。 a…

拓扑排序 + 深度优先搜索解决问题

如大家所知&#xff0c;使用深度优先搜索实现拓扑排序的总体思想是&#xff1a;对于一个特定节点&#xff0c;如果该节点的所有相邻节点都已经搜索完成&#xff0c;则该节点也会变成已经搜索完成的节点&#xff0c;在拓扑排序中&#xff0c;该节点位于其所有相邻节点的前面。一…