我的代碼不會將攝氏溫度轉換爲華氏溫度。代碼片段如下。我找不到我的錯誤。當它輸出136.4時,我的代碼輸出90。Arduino溫度轉換問題
float c= 58;
float temp= (((9/5) * c + 32));
Serial.println(temp);
我的代碼不會將攝氏溫度轉換爲華氏溫度。代碼片段如下。我找不到我的錯誤。當它輸出136.4時,我的代碼輸出90。Arduino溫度轉換問題
float c= 58;
float temp= (((9/5) * c + 32));
Serial.println(temp);
您正在下降整數除法的犯規,對此9/5
等於1
,由於截斷。改變這一行:
float temp= (((9/5) * c + 32));
到:
float temp= (((9.0/5.0) * c + 32.0));
使用漂浮在一個Arduino點操作是昂貴的。與大多數PC /所謂的智能手機等相反,arduino處理器沒有本地浮點支持。您可能需要使用整數算術。
作爲一般規則,爲避免不必要的舍入,應首先進行所有乘法運算,然後再進行除法運算。當然,除非積累的產品溢出。
這裏將是:
int temp = (c*9)/5 + 32;
如果你真的需要的精度,可以例如存儲溫度在1/100°的。
在Arduino上使用浮點運算不是世界上最好的主意... –
Thanks @Paul R這個工作像一個魅力 –