Hallo,
die 16 ist "korrekt": (600 * 1000) / 600 = 600.000 / 600 -> 16 Bit: 10.176 / 600 = 16
Folgende Varianten sollten funktionieren:
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(...)".Code:wa_numerator += ((uint32_t) line_values[i]) * (i+1) * 1000; oder wa_numerator += line_values[i] * (i+1) * 1000UL;
Carry
Hat sich erledigt... Man sollte halt nicht vergessen die Variablen nach der Berechnung zu reseten![]()
![]()
Diese Variante funktioniert jetzt:
DANKE für eure HilfeCode:wa_numerator += (long)(line_values[i]) *((i+1) * 100);![]()
EDIT: @Carry: Hab deinen Post leider erst jetzt gesehen, trotzdem danke für die Erklärung![]()
Geändert von Chypsylon (13.02.2012 um 15:27 Uhr)
Lesezeichen