找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2257|回复: 8
打印 上一主题 下一主题
收起左侧

加这个(float)是什么意思,把uint16类型转换成float类型吗

[复制链接]
跳转到指定楼层
楼主
ID:978416 发表于 2023-5-10 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uint16_t conv_value[6];

voltage[0]=(float)conv_value[0]*3.3/4096;


加这个(float)是什么意思,把uint16类型转换成float类型吗
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:821429 发表于 2023-5-10 18:11 | 只看该作者
(float)把conv_value[0]这个变量强制转化为float后与后面的3.3等运算(由于乘以3.3,已存在float,没有这个(float)也会这样做)。但是,右侧结果赋值给voltage[0]时,会再次转回voltage[0]自己的类型,本程序段看不到,需要看其定义
回复

使用道具 举报

板凳
ID:883242 发表于 2023-5-10 18:31 | 只看该作者
对是对,但如果是8位机,float操作占用的系统资源太多了,要尽量避免。
回复

使用道具 举报

地板
ID:123289 发表于 2023-5-11 15:18 | 只看该作者
3.3/4096=0.0008056640625。
在内存中如果存储表示呢?用几个字节存储,每个字节中写入什么?
这是用FLOAT的原因。
回复

使用道具 举报

5#
ID:883242 发表于 2023-5-11 16:21 | 只看该作者
3.3/4096完全可以写成80566ul,再做long型运算,反正都是显示给人看的,小数点打在哪里都太简单了,而long型运算占用的时间和消耗的flash空间要比float少太多太多了。
回复

使用道具 举报

6#
ID:330059 发表于 2023-5-11 20:27 | 只看该作者
这个是C语言的强制类型转换方法:强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
回复

使用道具 举报

7#
ID:1034262 发表于 2023-5-12 11:06 | 只看该作者
强制类型转换
回复

使用道具 举报

8#
ID:1074206 发表于 2023-5-16 21:51 | 只看该作者
强转变量类型,防止精度丢失
回复

使用道具 举报

9#
ID:77589 发表于 2023-5-17 15:25 | 只看该作者
就是你说的那个意思!
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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