Mikrocontroller und runden?

Gast #751756
Lesenswert?

Hallo,

wie genau funktioniert das runden beim Mikrocontroller, bzw. wie stabil 
ist es?

Ich habe eine 8-Bit Variable point die z.B. folgendermaßen berechnet 
wird:

point = (((216 * 144) / 100) - 56);

Ergibt einen Wert von 255,04. Der Mikrocontroller macht daraus eine 255. 
Wie sicher ist es das daraus immer eine 255 wird?

Ab wann würde er aufrunden, ab 255,5?
#751764
Lesenswert?

Kai wrote:
> Hallo,
>
> wie genau funktioniert das runden beim Mikrocontroller, bzw. wie stabil
> ist es?
>
> Ich habe eine 8-Bit Variable point die z.B. folgendermaßen berechnet
> wird:
>
> point = (((216 * 144) / 100) - 56);
>
> Ergibt einen Wert von 255,04. Der Mikrocontroller macht daraus eine 255.
> Wie sicher ist es das daraus immer eine 255 wird?
>
> Ab wann würde er aufrunden, ab 255,5?


In der Berechnung wird überhaupt nicht gerundet. Kommastellen
(so es sie gäbe) werden einfach abgeshcnitten.

Da in deiner Berechnung nur Ganzzahl-Werte (Integer) vorkommen,
wird die ganze Berechnung mit Ganzzahlarithmetik gemacht. Genauso
wie du es in der Grundschule gelernt hast:
Eine Mutter hat 13 Äpfel und 4 Kinder. Wenn alle Kinder gleich
viele Äpfel erhalten, wieviele Äpfel erhält dann jedes Kind
und wieviele Äpfel bleiben der Mutter übrig

   13 / 4  =  3

jedes Kind erhält 3 Äpfel und der Mutter bleiben 13 % 4 = 1
Apfel übrig. % ist die C Schreibweise für 'Rest bei einer Division'
Gast #751780
Lesenswert?

Man sollte sich immer ueberlegen wie genau man eine Zahl haben muss. Das 
haengt auch mit den Eingangsvariablen zusammen. Wenn ein Sensor nur 1% 
genau ist, bringen Rechnungen mit 12 Stellen nichts.
Gast #751786
Lesenswert?

Division der positiven Ganzzahlen a und b mit Abrunden:
1
a/b
Division der positiven Ganzzahlen a und b mit Aufrunden:
1
(a+b-1)/b
Division der positiven Ganzzahlen a und b mit Runden zur nächsten
Ganzzahl:
1
(a+b/2)/b
Aber Vorsicht: Bei negativen Zahlen ist das Ergebnis
prozessorabhängig.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren