Arduino的不能夠從40起通過1000例如Arduino的乘法誤差
void setup() {
Serial.begin(9600);
}
void loop() {
float a = 60 * 1000;
Serial.print(a);
}
乘數的結果爲-5536 .-。 ???什麼 ??
我需要秒轉換成毫秒,但我不知道替代1000
Arduino的不能夠從40起通過1000例如Arduino的乘法誤差
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;
這兩種解決方案是相同的;第一個將float(int)60轉換爲float,然後將其乘以(int)1000,這會給你(float)60000。 第二個告訴編譯器,60.0是一個浮點數。
在這兩種情況下,一個浮點乘以一個int給你一個浮點數,所以......沒有溢出!
是的,很容易忘記整數常量默認情況下是16位的:http://arduino.cc/en/Reference/IntegerConstants – jdr5ca
的問題是,Serial.print
轉換a
到有符號整數乘法。試試這個:
Serial.print((float)a);
或本:
#include "floatToString.h"
char buffer[25];
Serial.print(floatToString(buffer, a, 5));
請參閱:https://learn.sparkfun.com/tutorials/data-types-in-arduino –
如果它解決了您的問題,請將答案標記爲「已接受」 – frarugi87