Ich habe einen in Matlab entwickelten Ganzzahl-Algorithmus auf einen
ARM-Cortex-Controller übertragen. Dabei fiel mir auf, dass die
Rechenergebnisse von ARM und Matlab unterschiedlich sind. Der ARM (bzw.
der C-Compiler) verhält sich so, wie ich das bei einer Integer-Division
erwarte: Es wird nur der Ganzzahlanteil des Quotienten berechnet, ein
eventueller Divisionsrest verworfen. 3/2 ergibt also 1. Dies ist
äquivalent zu einem Abrunden auf die nächstniedrigere Ganzzahl.
Nicht so bei Matlab:
1 | >> m = uint32(3);
|
2 | >> n = uint32(2);
|
3 | >> m/n
|
4 | ans = 2
|
Matlab scheint also hier auf- statt abzurunden. Es sieht so aus, als ob
hier tatsächlich kaufmännisch gerundet wird, denn z.B. 7/3 wird als 2
berechnet.
Gibt es eine Möglichkeit, Matlab das "klassische" Abrunden beizubringen?