Hallo,
wegen Problemen bei Berechnungen habe ich mich mit Trunc noch einmal auseinandergesetzt und dabei folgenden Test-Code eingesetzt:
Das Ergebnis sieht dann so aus:
Daß Trunc die 7.8 auf 8 aufrundet (!), habe ich so nicht erwartet - so steht das auch nicht im Handbuch. Der Int-Befehl macht das schon eher so, wie auch Delphi es tut. Komisch ist auch, daß ich bei Trunc bei positiven Werten ein Type-Cast setzen muß, bei negativen aber nicht.
Also, Trunc sieht im AVRco mehr wie ein Round-Befehl aus. Ist das so richtig? Delphi handhabt das anders.
Gruß, Michael
wegen Problemen bei Berechnungen habe ich mich mit Trunc noch einmal auseinandergesetzt und dabei folgenden Test-Code eingesetzt:
Code
SLIP_WriteStr('TXT|Trunc(+7.3): '+IntToStr(Integer(Trunc(+7.3))));
SLIP_WriteStr('TXT|Trunc(-7.3): '+IntToStr(Trunc(-7.3)));
SLIP_WriteStr('TXT|Trunc(+7.7): '+IntToStr(Integer(Trunc(7.7))));
SLIP_WriteStr('TXT|Trunc(-7.7): '+IntToStr(Trunc(-7.7)));
SLIP_WriteStr('TXT|Int(+7.3): '+FloatToStr(Int(+7.3)));
SLIP_WriteStr('TXT|Int(-7.3): '+FloatToStr(Int(-7.3)));
SLIP_WriteStr('TXT|Int(+7.7): '+FloatToStr(Int(+7.7)));
SLIP_WriteStr('TXT|Int(-7.7): '+FloatToStr(Int(-7.7)));
SLIP_WriteStr('TXT|Trunc(-7.3): '+IntToStr(Trunc(-7.3)));
SLIP_WriteStr('TXT|Trunc(+7.7): '+IntToStr(Integer(Trunc(7.7))));
SLIP_WriteStr('TXT|Trunc(-7.7): '+IntToStr(Trunc(-7.7)));
SLIP_WriteStr('TXT|Int(+7.3): '+FloatToStr(Int(+7.3)));
SLIP_WriteStr('TXT|Int(-7.3): '+FloatToStr(Int(-7.3)));
SLIP_WriteStr('TXT|Int(+7.7): '+FloatToStr(Int(+7.7)));
SLIP_WriteStr('TXT|Int(-7.7): '+FloatToStr(Int(-7.7)));
Das Ergebnis sieht dann so aus:
Code
Trunc(+7.3): 7
Trunc(-7.3): -7
Trunc(+7.7): 8
Trunc(-7.7): -8
Int(+7.3): 7
Int(-7.3): -7
Int(+7.7): 7
Int(-7.7): -7
Trunc(-7.3): -7
Trunc(+7.7): 8
Trunc(-7.7): -8
Int(+7.3): 7
Int(-7.3): -7
Int(+7.7): 7
Int(-7.7): -7
Daß Trunc die 7.8 auf 8 aufrundet (!), habe ich so nicht erwartet - so steht das auch nicht im Handbuch. Der Int-Befehl macht das schon eher so, wie auch Delphi es tut. Komisch ist auch, daß ich bei Trunc bei positiven Werten ein Type-Cast setzen muß, bei negativen aber nicht.
Also, Trunc sieht im AVRco mehr wie ein Round-Befehl aus. Ist das so richtig? Delphi handhabt das anders.
Gruß, Michael