两个整数相乘给出错误值(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)的主要内容,如果未能解决你的问题,请参考以下文章

C:矩阵向量乘积,两个双数相乘给出错误符号

Atmel studio 汇编:8 位数字的平方根

在 C++ 中将两个矩阵相乘

大整数相乘

两个大整数相乘程序

如何将包含自然值和货币的字段相乘?