请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

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

请教一个,float类型转为long类型

[复制链接]

12

主题

32

回帖

68

积分

初级会员

积分
68
发表于 2021-12-20 17:45:34 | 显示全部楼层 |阅读模式
就是我想把数据float v = 12345.67转为long y=1234567?有没有比较好的写法?
回复

使用道具 举报

39

主题

928

回帖

1050

积分

至尊会员

积分
1050
发表于 2021-12-20 18:34:47 | 显示全部楼层

回帖奖励 +2 个金币

这还不简单:
y = (double)v * 100;
回复

使用道具 举报

210

主题

1041

回帖

1681

积分

至尊会员

More we do, more we can do.

积分
1681
发表于 2021-12-21 20:18:01 | 显示全部楼层
ghslfgkkl88 发表于 2021-12-20 18:34
这还不简单:
y = (double)v * 100;

为什么要提升到double?不会超出表示范围
回复

使用道具 举报

39

主题

928

回帖

1050

积分

至尊会员

积分
1050
发表于 2021-12-22 10:01:09 | 显示全部楼层
emwin 发表于 2021-12-21 20:18
为什么要提升到double?不会超出表示范围

数值小,不超出表示范围,可以不提升。但我自己通常都会提升,可确保无虞。
回复

使用道具 举报

210

主题

1041

回帖

1681

积分

至尊会员

More we do, more we can do.

积分
1681
发表于 2021-12-22 11:36:13 | 显示全部楼层
ghslfgkkl88 发表于 2021-12-22 10:01
数值小,不超出表示范围,可以不提升。但我自己通常都会提升,可确保无虞。

对不带DSP指令集的M0/M3,效率应该有差异
回复

使用道具 举报

39

主题

928

回帖

1050

积分

至尊会员

积分
1050
发表于 2021-12-22 11:48:44 | 显示全部楼层
emwin 发表于 2021-12-22 11:36
对不带DSP指令集的M0/M3,效率应该有差异

1. 你怎么知道楼主的数值范围是多大?他在楼主位的数值大概只是举例;
2. 你怎么知道楼主用的什么芯片?
3. 数据量小的情况下,这点效率算什么?绝大多数时候,5us完成跟0.5us完成没区别,不影响使用;
4. 你分清楚了DSP指令和FPU单元的区别吗?
回复

使用道具 举报

210

主题

1041

回帖

1681

积分

至尊会员

More we do, more we can do.

积分
1681
发表于 2021-12-22 13:31:03 | 显示全部楼层
ghslfgkkl88 发表于 2021-12-22 11:48
1. 你怎么知道楼主的数值范围是多大?他在楼主位的数值大概只是举例;
2. 你怎么知道楼主用的什么芯片? ...

3. 功能没差别,考虑效率当然可以
4. 写错了,应该表述为Floating Point指令集
回复

使用道具 举报

6

主题

57

回帖

75

积分

初级会员

积分
75
发表于 2021-12-29 15:27:08 | 显示全部楼层
如果不提升的话很大概率会超出范围,毕竟float只能够表示6位有效数字。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 01:58 , Processed in 0.170171 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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