两个整数相乘给出错误值(ATMEL ATmega32A)
Posted
技术标签:
【中文标题】两个整数相乘给出错误值(ATMEL ATmega32A)【英文标题】:Multiplication of two integer gives wrong value (ATMEL ATmega32A) 【发布时间】:2017-07-28 09:06:33 【问题描述】:这里添加了数据和 Uart 数据。我真的不明白问题出在哪里。我尝试了不同的解决方案,例如更改数据类型、值、打印...
我使用的是由 USBasp 编程的 ATmega32A。
代码如下: https://hastebin.com/soqexihoni.cs 这是UART Com。日志: https://hastebin.com/muwekuniva.hs
另一个版本我改变了变量的数据类型。 但只有“临时”变量发生了变化。我可以阅读它。但问题仍然存在.. " temp = (5*data*100)/1024; " 没有给出任何逻辑结果..
感谢您的每条评论(y)
【问题讨论】:
【参考方案1】:您必须小心数据类型以及编写代码的方式。
代码(5*data*100)/1024
执行整数运算,然后将其转换为浮点数,因为temp
是浮点数。
你可以试试这样的:
temp = ((float)5 * (float)data * (float)100) / (float)1024;
强制转换所有变量可能有点过头了,但这是原则。
【讨论】:
以上是关于两个整数相乘给出错误值(ATMEL ATmega32A)的主要内容,如果未能解决你的问题,请参考以下文章