抱歉这个不好的问题,但我认为某些变量的舍入有问题。
在我的 C 应用程序中,我必须计算消耗的能量和传感器节点的剩余能量。这是每 10 秒计算一次,如下所示:
cycle_energy = (some long mathematical computation)
energy_spent += cycle_energy;
remaining_energy -= cycle_energy;
在应用程序开始时,这两个量被初始化为:
static float energy_spent = 0;
static float remaining_energy = 1000000;
然后每 10 秒打印一次这两个值。由于我使用的 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
,and remaining_energy = 792093
,在另一个energy_spent = 215695
and中remaining_energy = 783828
。
我认为唯一的问题在于我打印值时,但是我认为当仅打印值时它们没有四舍五入。
预先感谢。