Trunc (7.7) = 8??

mc-electronic
Benutzer
Avatar
Gender: n/a
Location: Sauerland NRW
Posts: 372
Registered: 03 / 2008
Subject:

Trunc (7.7) = 8??

 · 
Posted: 10.12.2010 - 17:01  ·  #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
 
Subject:

Re: Trunc (7.7) = 8??

 · 
Posted: 12.12.2010 - 11:47  ·  #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
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Trunc (7.7) = 8??

 · 
Posted: 12.12.2010 - 20:04  ·  #3
@all,

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

rolf
ThomasW69
 
Avatar
 
Subject:

Re: Trunc (7.7) = 8??

 · 
Posted: 13.12.2010 - 06:29  ·  #4
Das ging ja mal wieder fix !
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   79   93 · Page-Gen-Time: 0.025334s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI