硬汉嵌入式论坛

 找回密码
 立即注册
查看: 730|回复: 3
收起左侧

keill里整形转字符型

[复制链接]

9

主题

6

回帖

33

积分

新手上路

积分
33
发表于 2023-12-1 16:58:33 | 显示全部楼层 |阅读模式
屏幕截图 2023-12-01 164618.png pid.sv是float的我想pid.sv为啥转换过来不是45.1呢,有点想不通
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2023-12-1 18:59:06 | 显示全部楼层
浮点的表达式决定的,无法像整数那样1对1.

因为如此,所以浮点数式有精度的,单精度浮点精度是小数点后7位,双精度浮点精度是小数点15位。

不过你这个编译器一般可以正常求出45.1,有时候会是你展示的那样,两种都不影响,比如我这里H7的双精度计算的是45.1

下载 (8).png
回复

使用道具 举报

9

主题

6

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2023-12-3 23:02:35 | 显示全部楼层
eric2013 发表于 2023-12-1 18:59
浮点的表达式决定的,无法像整数那样1对1.

因为如此,所以浮点数式有精度的,单精度浮点精度是小数点后7 ...

回复一下,今天试了一下 双精度的是可以计算出45.1的,单精度的貌似就是不行
回复

使用道具 举报

6

主题

89

回帖

107

积分

初级会员

积分
107
发表于 2024-4-23 11:18:36 | 显示全部楼层
曾经我也以为双精度正常表示某些数,但是也会有误差,具体是哪个数忘记了,下面举个例说明,
要设置电压 12.345,如果不处理精度偏差会成12.344
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 00:21 , Processed in 0.195446 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表