悪い質問で申し訳ありませんが、特定の変数の丸めに問題があると思います。
私の C アプリケーションでは、消費したエネルギーとセンサー ノードの残りのエネルギーを計算する必要があります。これは、次のように 10 秒ごとに計算されます。
cycle_energy = (some long mathematical computation)
energy_spent += cycle_energy;
remaining_energy -= cycle_energy;
アプリケーションの開始時に、2 つの数量は次の場所で初期化されます。
static float energy_spent = 0;
static float remaining_energy = 1000000;
その後、10 秒ごとに 2 つの値が出力されます。私が使用する gcc は、計算では float をサポートしていますが、印刷ではサポートしていないため、2 つの量を unsigned long に変換します。
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
。
値を印刷するときに唯一の問題があると思いますが、値を印刷するだけでは丸められません。
少し早いですがお礼を。