Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller und runden?


von Kai (Gast)


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?

von Robert S. (razer) Benutzerseite


Lesenswert?

Kai wrote:
> Ab wann würde er aufrunden, ab 255,5?

Gar nie. Auch 255,9 ist in der Integerrechnung eine 255

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Gerundet wird  da garnicht, der Nachkommaanteil wird abgeschnitten wenn 
Du mit ints rechnest.

von Michael Wilhelm (Gast)


Lesenswert?

Rechenwert x 10, dann +5, danach wieder / 10. Das ergibt das 
kaufmännische Runden oder wie immer das heist.

MW

von Karl H. (kbuchegg)


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'

von Zacc (Gast)


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.

von yalu (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.