su6666 发表于 2021-12-20 17:45:34

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

就是我想把数据float v = 12345.67转为long y=1234567?有没有比较好的写法?

ghslfgkkl88 发表于 2021-12-20 18:34:47

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

emwin 发表于 2021-12-21 20:18:01

ghslfgkkl88 发表于 2021-12-20 18:34
这还不简单:
y = (double)v * 100;

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

ghslfgkkl88 发表于 2021-12-22 10:01:09

emwin 发表于 2021-12-21 20:18
为什么要提升到double?不会超出表示范围

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

emwin 发表于 2021-12-22 11:36:13

ghslfgkkl88 发表于 2021-12-22 10:01
数值小,不超出表示范围,可以不提升。但我自己通常都会提升,可确保无虞。

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

ghslfgkkl88 发表于 2021-12-22 11:48:44

emwin 发表于 2021-12-22 11:36
对不带DSP指令集的M0/M3,效率应该有差异

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

emwin 发表于 2021-12-22 13:31:03

ghslfgkkl88 发表于 2021-12-22 11:48
1. 你怎么知道楼主的数值范围是多大?他在楼主位的数值大概只是举例;
2. 你怎么知道楼主用的什么芯片? ...

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

sl3340 发表于 2021-12-29 15:27:08

如果不提升的话很大概率会超出范围,毕竟float只能够表示6位有效数字。
页: [1]
查看完整版本: 请教一个,float类型转为long类型