Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Trunc liefert falschen Wert (https://www.delphipraxis.net/183235-trunc-liefert-falschen-wert.html)

devidespe 22. Dez 2014 16:31

Delphi-Version: XE

Trunc liefert falschen Wert
 
Hallo,

irgendwie scheint Trunc bei mir nicht ganz korrekt zu rechnen. Wenn ich einen Real-Wert von 9.7 x 10 multipliziere und daraus einen Integer mache, sollte es 97 sein, Trunc macht daraus aber 96:

Delphi-Quellcode:
var ErgTemp : Real;
    ErgTempInt : Integer;
begin
  ErgTemp:=9.7;
  ErgTempInt:=Trunc(ErgTemp * 10);
  ShowMessage(IntToStr(ErgTempInt));
end;
Hat jemand eine Idee, woran das liegen könnte? Vielen Dank.

Medium 22. Dez 2014 16:39

AW: Trunc liefert falschen Wert
 
Hier im Forum suchenfloats ungenauigkeit

-> Nimm besser Round()

Mavarik 22. Dez 2014 17:26

AW: Trunc liefert falschen Wert
 
Deswegen:

Delphi-Quellcode:
var ErgTemp : Real;
     ErgTempInt : Integer;
begin
   ErgTemp:=9.7;
   ErgTemp := ErgTemp * 10;
   ErgTempInt:=Trunc(ErgTemp);
   ShowMessage(IntToStr(ErgTempInt));
end;
Mavarik

Der schöne Günther 22. Dez 2014 18:02

AW: Trunc liefert falschen Wert
 
Also ich kriege wie erwartet 97 raus 8-)

mm1256 22. Dez 2014 18:16

AW: Trunc liefert falschen Wert
 
Komisch...
Delphi-Quellcode:
var ErgTemp : Real;
    ErgTempInt : Integer;
begin
  ErgTemp:=9.7;
  ErgTempInt:=Trunc(ErgTemp * 10);
  ShowMessage(IntToStr(ErgTempInt));
end;
...gibt bei mir auch 96. Warum das bei dir 97 sind, ist mir ein Rätsel :roll:

Der schöne Günther 22. Dez 2014 18:19

AW: Trunc liefert falschen Wert
 
Oh, es wird wieder lustig. Herzlich Willkommen zu einer neuen Ausgabe von

Compiler - Magic


Auf Win64 kommt bei mir 97 heraus. Bei Win32 kommt 96 heraus. Wer probiert iOS und Android aus?

Insider2004 22. Dez 2014 18:50

AW: Trunc liefert falschen Wert
 
9.7*10=96.999999999999999 -> trunc -> 96.

stimmt doch! bitte lesen: Dezimalsysten <-> Binärsystem

mm1256 22. Dez 2014 19:16

AW: Trunc liefert falschen Wert
 
Und warum dann mit Win32 und Win64 zwei unterschiedliche Werte. Hab es soeben auch nachvollziehen können.

p80286 22. Dez 2014 19:22

AW: Trunc liefert falschen Wert
 
Darf ich mal dezent auf #2 hinweisen?
oder anders herum trunc(96.9999999999999999999) ist nun mal 96 und trunc(97.0000000000000000001) ist 97!

Gruß
K-H

Insider2004 22. Dez 2014 19:28

AW: Trunc liefert falschen Wert
 
Zitat:

Zitat von mm1256 (Beitrag 1284420)
Und warum dann mit Win32 und Win64 zwei unterschiedliche Werte. Hab es soeben auch nachvollziehen können.

Real darfst du nicht nehmen. Nur Double. Auch nich Extended.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz