Trunc (7.7) = 8??

mc-electronic
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Sauerland NRW
Beiträge: 372
Dabei seit: 03 / 2008
Betreff:

Trunc (7.7) = 8??

 · 
Gepostet: 10.12.2010 - 17:01 Uhr  ·  #1
Hallo,

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)));


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


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
ThomasW69
 
Avatar
 
Betreff:

Re: Trunc (7.7) = 8??

 · 
Gepostet: 12.12.2010 - 11:47 Uhr  ·  #2
Das dürfte ein bug sein, weil mathematisch entspricht das eher einem round.
Trunc und Int müssten eigentlich nach Definition das selbe tun.
http://www.delphibasics.co.uk/…dCode1=Yes
Der einzige Unterschied besteht im Typ des Ergebnisses. Bei Int ist der Ergebnistyp ein float und bei trunc ist es ein Integer. Bei negativen Zahlen wird das anscheinend auch funktionieren und bei positiven anscheinend nicht, was den Typecast nötig macht. Dürfte auch ein Bug sein.
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Trunc (7.7) = 8??

 · 
Gepostet: 12.12.2010 - 20:04 Uhr  ·  #3
@all,

dieser Bug taucht nur auf wenn bei trunc(x) das "x" eine Konstante ist. Bug ist jetzt beseitigt.

rolf
ThomasW69
 
Avatar
 
Betreff:

Re: Trunc (7.7) = 8??

 · 
Gepostet: 13.12.2010 - 06:29 Uhr  ·  #4
Das ging ja mal wieder fix !
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   79   93 · Page-Gen-Time: 0.023706s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI