對不起,不好的問題,但我認爲,我對某些變數四捨五入有問題。僅在打印時舍入值嗎?
在我的C應用程序中,我必須計算耗費的能量和傳感器節點的剩餘部分。這是每10秒計算是這樣的:
static float energy_spent = 0;
static float remaining_energy = 1000000;
然後每10秒的兩個值被印刷:
cycle_energy = (some long mathematical computation)
energy_spent += cycle_energy;
remaining_energy -= cycle_energy;
在應用程序開始時,兩個量在初始化。由於我使用的gcc支持浮點計算,但不能打印,所以我將這兩個量轉換爲無符號長整型。
printf("Energy spent: %lu \n", (uint32_t) energy_spent);
printf("Remaining energy: %lu \n", (uint32_t) remaining_energy);
的問題是,在應用程序結束時,該量1000000 - energy_spent
應該從它們運算出的方式等於remaining_energy
。
但是這在我的應用程序中並不正確。數量1000000 - energy_spent
和remaining_energy
在開始時非常相似,但它們的差異隨時間而增加。
例如,在應用程序結束時,在一個情況下energy_spent = 207223
和remaining_energy = 792093
,在另一個energy_spent = 215695
和remaining_energy = 783828
。
我認爲唯一的問題在於我打印的值,但我雖然只是打印值時,他們不是四捨五入。
提前致謝。
帶''f'後綴的'float'例如'static float remaining_energy = 1000000.f;' –
@DavidRF他爲什麼要這樣? – ouah
@DavidRF你的意思是說,我的變量'remaining_energy'被初始化爲整數? – aliants