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