网站首页 > 文章精选 正文
浮点数 |
PLC中的浮点数是指既包含小数又包含整数的数据类型
REAL |
说明
数据类型 REAL 的操作数长度为 32 位,用于表示浮点数。数据类型 REAL 的操作数由以下三部分组成:
- 符号:该符号由第 31 位的信号状态确定。第 31 位的值可以是“0”(正数)或“1”(负数)。
- 以 2 为底的 8 位指数:该指数按常数增加(基值 +127),因此其范围为 0 ~ 255。
- 23 位尾数:仅显示尾数的小数部分。尾数为标准化的浮点数,其整数部分始终为 1,且不会保存。
处理 REAL 数据类型时会精确到 6 位数。
下图显示了数据类型 REAL 的结构:
说明 使用浮点数时,将只保存由 IEEE754 标准定义的精度。另外指定的小数位数将根据 IEEE754 进行四舍五入。 小数位的位数可能会因频繁的嵌套算术计算而减少。 如果指定的小数位数多于该数据类型可存储的小数位数,则该数字会舍入到该值范围允许的精度所对应的值。 |
下表列出了数据类型 REAL 的属性:
长度(位) | 格式 | 取值范围 | 输入值示例 |
32 | 符合 IEEE754 标准的浮点数 | -3.402823e+38 到 -1.175495e-38 ±0.0 +1.175495e-38 到 +3.402823e+38 | 1.0e-5; REAL#1.0e-5 |
浮点数 | 1.0; REAL#1.0 |
LREAL |
说明
数据类型 LREAL 的操作数长度为 64 位,用于表示浮点数。数据类型 LREAL 的操作数由以下三部分组成:
- 符号:该符号由第 63 位的信号状态确定。第 63 位的值可以是“0”(正数)或“1”(负数)。
- 以 2 为底的 11 位指数:该指数按常数增加(基值 +1023),因此其范围为 0 ~ 2047。
- 52 位尾数:仅显示尾数的小数部分。尾数为标准化的浮点数,其整数部分始终为 1,且不会保存。
处理 LREAL 数据类型时会精确到 15 位数。
下图显示了数据类型 LREAL 的结构:
下表列出了数据类型 LREAL 的属性:
长度(位) | 格式 | 取值范围 | 输入值示例 |
64 | 符合 IEEE754 标准的浮点数 | -1.7976931348623157e+308 到 -2.2250738585072014e-308 ±0.0 +2.2250738585072014e-308 到 +1.7976931348623157e+308 | 1.0e-5; LREAL#1.0e-5 |
浮点数 | 1.0; LREAL#1.0 |
说明 使用浮点数时,将只保存由 IEEE754 标准定义的精度。另外指定的小数位数将根据 IEEE754 进行四舍五入。 小数位的位数可能会因频繁的嵌套算术计算而减少。 如果指定的小数位数比数据类型可保存的位数要多,那么将根据该值范围所允许的精度值对该值进行四舍五入。 |
无效浮点数 |
说明
可以区分数据类型 REAL 和 LREAL 的 4 位数字范围:
- 以最高精度存储的标准数字
- 不是以最高精度存储的非标准数字
- 无穷数: +Inf/-Inf(无穷)
- 无效数: NaN(非数字)
说明 浮点数将按照 IEEE754 标准进行保存。 转换结果或带有非规范化、无限或 NaN(非数字)浮点数的算术函数的结果取决于 CPU。 |
如果在数学函数中没有使用标准浮点数进行运算,那么显示的结果将因所用 CPU 系列不同而存在很大差异。
CPU 无法计算非标准浮点数,但 S7-300 和 S7-400 系列的一些较旧 CPU 版本除外。 非标准化数字的位模式以零表示。 如果计算结果在此范围内,则继续显示为零;并置位状态位 OV 和 OS(数值范围下冲)。
即使数学函数中无效浮点数值的显示精度有一定限制,但在 TIA Portal 中可监视指数为 -39 的数值(如 2.4408e-039),而不会显示错误结果。 这意味着浮点数值可超出有效的数字值范围内。
说明 以下内容适用于 S7-1200 V1、V2 和 V3 系列的 CPU: 比较运算“等于”使用无效浮点数的位模式。 如果比较具有相同位模式的 2 个“NaN 数值”,则“等于”运算的输出将返回结果 TRUE。 |
说明 以下各项适用于 S7-1200 V4 和 S7-1500 系列的 CPU: 如果比较两个无效数值 (NaN),则结果将始终为 FALSE,而与无效数值的位模式及比较关系 (>, >, ...) 无关。 |
说明 比较非标准浮点数 要对两个非标准浮点数执行“等于”比较运算,S7-300/400 系列 CPU 的输出信号状态将置位为“0”,而 S7-1200/1500 系列 CPU 的输出信号状态则将置位为“1”。 |
如果算术函数的输入变量表示无效浮点数,那么无效浮点数也将作为结果输出。
可通过以下选项判断由无效浮点数引起的可能错误:
- 在 LAD/FBD 和 SCL 中,可查询使能输入 ENO 是否为 FALSE
- 在 STL 中,可对状态位 OV 进行判断
- 上一篇: 浮点型数据
- 下一篇: 「C初级」.浮点数的困惑
猜你喜欢
- 2025-01-09 C语言陷阱之浮点数精度问题
- 2025-01-09 字面量的特殊点
- 2025-01-09 单精度和双精度浮点数
- 2025-01-09 面试官问我存储金额应该用哪种数据类型,我竟这样回答
- 2025-01-09 「C初级」.浮点数的困惑
- 2025-01-09 浮点型数据
- 2025-01-09 2022系统分析师考试准备(九)——计算机系统(2014)
- 2025-01-09 为什么float和double运算会丢失精度?BigDecimal就一定靠谱?
- 2025-01-09 浮点数的算数法则
- 2025-01-09 【JS 浮点数比较】使用最小误差比较浮点数
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)