Arduino无法将数字从40开始乘以1000,例如
void setup() {
Serial.begin(9600);
}
void loop() {
float a = 60 * 1000;
Serial.print(a);
}
结果是-5536 .-。 ???什么??
我需要将秒转换为毫秒,但我不知道乘法的替代方法
答案 0 :(得分:2)
问题是你是
解决方案?既然你想处理花车......用花车操作!
float a = ((float)60) * 1000;
float a = 60.0 * 1000;
两种解决方案是相同的;第一个在浮点数中转换(int)60,然后将它乘以(int)1000,这给你(浮点数)60000。 第二个告诉编译器60.0是浮点数。
在这两种情况下,浮点数乘以一个int会给你一个浮点数,所以......没有溢出!
答案 1 :(得分:0)
问题是Serial.print
会将a
转换为有符号整数。试试这个:
Serial.print((float)a);
或者这个:
#include "floatToString.h"
char buffer[25];
Serial.print(floatToString(buffer, a, 5));