Microchip
直播中

李建军

8年用户 140经验值
私信 关注
[问答]

int到float该怎么转换?

大家好,我通过我的通信接口读取一个值。这个变量是char类型。我把这个值移到int中,我需要浮点中的值。我试图用下面的代码行将其转换为float:tempcal=(float)i;这里tempcal是一个float,i是一个被转换为float的int。为了测试,我通过通信接口发送了值21。我希望在执行代码行b之后,tempcal值就是这个值。但是tempcal的输出是2.9E-44。我已经更新了MPLab软件,编译器,并且尝试了几种不同的方法来完成这个任务,但没有成功。任何帮助都是好的。谢谢!

回帖(8)

陈晨

2019-10-30 09:49:37
这个代码看起来像什么?你使用的是什么CPU?
举报

李铭鑫

2019-10-30 10:08:47
嗨,不要弄乱铸造操作!强制转换不是转换操作符。强制转换是向编译器请求将变量视为强制转换类型,而不是声明的类型,然后将其转换或用作强制转换告诉。要执行您最初要求的操作:当变量被声明并与正确类型一起使用时,编译器将k现在根据需要执行转换。2.9E-44是存储为:0x000015;又名:00000021的值的浮点解释。如果您确实通过不知道数据传输类型的通信接口传输了实际的二进制浮点数据,那么可以在原始问题中使用这个技巧。推测。但是这需要通信接口能够在没有解释或翻译的情况下传输所有二进制值。
举报

王玲

2019-10-30 10:20:37
不工作的代码行实际上就是我上面发布的那行。但是我发现随着MPLab的更新,编译器设置错误,文件不再突然被找到,我的代码也完全被破坏了……当他们发布MPLab更新时,我总是遇到这种情况。旧版本刚刚开始工作奇怪,这迫使我更新…通常,一旦更新完成,同样的代码就可以工作了。只是现在所有的设置都消失了,文件不再链接,所以我必须重新设置所有的东西…
举报

王玲

2019-10-30 10:36:33
我已经试过代码了,但没用。但我确实有一些问题的编程环境更新,所以我会先修复现在…
举报

更多回帖

发帖
×
20
完善资料,
赚取积分