-
Hallo,
die 16 ist "korrekt": (600 * 1000) / 600 = 600.000 / 600 -> 16 Bit: 10.176 / 600 = 16 :)
Folgende Varianten sollten funktionieren:
Code:
wa_numerator += ((uint32_t) line_values[i]) * (i+1) * 1000;
oder
wa_numerator += line_values[i] * (i+1) * 1000UL;
Wichtig ist, dass der Compiler erkennt, dass er auf der rechten Seite in "uint32_t" rechnen soll. Nebenbei, "itoa(...)" passt nicht zu einem "uint", dafür gibt es "utoa(...)".
Carry
-
Hat sich erledigt... Man sollte halt nicht vergessen die Variablen nach der Berechnung zu reseten :oops: ](*,)
Diese Variante funktioniert jetzt:
Code:
wa_numerator += (long)(line_values[i]) *((i+1) * 100);
DANKE für eure Hilfe :)
EDIT: @Carry: Hab deinen Post leider erst jetzt gesehen, trotzdem danke für die Erklärung :)