2016-02-17 295 views
0

我的代碼不會將攝氏溫度轉換爲華氏溫度。代碼片段如下。我找不到我的錯誤。當它輸出136.4時,我的代碼輸出90。Arduino溫度轉換問題

float c= 58; 
    float temp= (((9/5) * c + 32)); 
    Serial.println(temp);  

回答

2

您正在下降整數除法的犯規,對此9/5等於1,由於截斷。改變這一行:

float temp= (((9/5) * c + 32)); 

到:

float temp= (((9.0/5.0) * c + 32.0)); 
+0

在Arduino上使用浮點運算不是世界上最好的主意... –

+1

Thanks @Paul R這個工作像一個魅力 –

2

使用漂浮在一個Arduino點操作是昂貴的。與大多數PC /所謂的智能手機等相反,arduino處理器沒有本地浮點支持。您可能需要使用整數算術。

作爲一般規則,爲避免不必要的舍入,應首先進行所有乘法運算,然後再進行除法運算。當然,除非積累的產品溢出。

這裏將是:

int temp = (c*9)/5 + 32; 

如果你真的需要的精度,可以例如存儲溫度在1/100°的。