Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Double-Wert in einen Single-Wert umwandeln (https://www.delphipraxis.net/59300-double-wert-einen-single-wert-umwandeln.html)

swbo 20. Dez 2005 12:46


Double-Wert in einen Single-Wert umwandeln
 
Hallo,

ich erhalte über eine globale Variable einen Singlewert von 661.299998. Dieser Wert wird auf eine Variable vom Wert double mit trunc(661.299998)/10; Ich erhalte nun 661.200000. Leider muss ich nun diesenf Wert wieder in einen Single-Umwandeln und erhalte dann wieder einne Wert von 661.200003. Wie bekomme ich die 3 bei diesem Singlewert weg? Danke.

Gruss
-Swen

tigerman33 20. Dez 2005 13:00

Re: Double-Wert in einen Single-Wert umwandeln
 
Diese Ungenauigkeiten sind bei Floats normal (d.h. nicht zu ändern). Das liegt an der begrenzten Genauigkeit, die man mit (endlich vielen) Bits nur erreichen kann.
Normalerweise macht sich der Fehler allerdings erst etwas weiter hinten hinter dem Komma bemerkbar. Hast du vielleicht ein paar Nullen unterschlagen?
Ansonsten probier mal, 0.000003 abzuziehen. Aber wie gesagt, 100%ige Genauigkeit wirst du im Allgemeinen nicht erreichen können!

//edit:
BTW, herzlich Willkommen in der DP! :hi:

alzaimar 20. Dez 2005 13:23

Re: Double-Wert in einen Single-Wert umwandeln
 
Beweis für tigerman's Behauptung:
Delphi-Quellcode:
Var
  s : Single;

Begin
  s:=6122/10; // sollte ja 612.2 sein
  showmessage (FloatToStr (s));
End;
Tipp: Kein Single, immer Extended. Oder zumindest Double. Der sollte doch genau sein.

Zitat:

Zitat von swbo
.. Dieser Wert wird auf eine Variable vom Wert double mit trunc(661.299998)/10; Ich erhalte nun 661.200000....

Nee, da hast Du dich wohl verschrieben: Trunc (661.299998)/10 ist immer 66.1 (ca.) :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr.

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