Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StrToFloat und FloatToStr (https://www.delphipraxis.net/29622-strtofloat-und-floattostr.html)

HavoC 12. Sep 2004 09:55


StrToFloat und FloatToStr
 
Ich hab da ein kleines Problem mit FloatToStr und umgekehrt.
Ich arbeite mit folgenden Deklarationen:
Delphi-Quellcode:
type T3dVektor = record
              x1, x2, x3: real;
            end;
...
var PDatei: File of T3dVektor;
Nun hab ich folgendes Problem.
Ich lese Strings aus Edit-Boxen und konvertiere diese mit StrToFloat, dieser Wert wird dann in die Datei geschrieben.
Wenn ich nun aber wieder aus der Datei lese, stellt mir Delphi den Wert nicht als Real da, wie er es tun sollte. StrToFloatF hat mir auch nicht geholfen, da zeigt er mir komischerweise immer 0 an, obwohl der Eintrag in der Datei nen anderen Wert haben dürfte.
Wie bekomme ich also den Float-Wert in nen Real umgewandelt? FloatToDecimal müsste helfen aber ich hab irgendwie keine Beispiele dazu gefunden und Blicke das mit den Parametern da nicht wirklich.

Schonmal danke im Vorraus für eventuelle Hilfe :)

glkgereon 13. Sep 2004 18:44

Re: StrToFloat und FloatToStr
 
also es heisst immer keinen real benutzen...nutz doch einfach double...

oder hab ich das problkem missverstanden?

Hansa 13. Sep 2004 23:09

Re: StrToFloat und FloatToStr
 
Zitat:

Zitat von glkbkk
also es heisst immer keinen real benutzen...nutz doch einfach double...

Ähh, :gruebel: Warum kein real? Wo hast Du das her ?

Luckie 13. Sep 2004 23:41

Re: StrToFloat und FloatToStr
 
Aus der Hilfe eventuell?
Zitat:

The six-byte Real48 type was called Real in earlier versions of Object Pascal.
[..]
Real48 is maintained for backward compatibility. Since its storage format is not native to the Intel CPU family, it results in slower performance than other floating-point types.

dizzy 13. Sep 2004 23:49

Re: StrToFloat und FloatToStr
 
Aber er nutzt ja nicht Real48 ;). Das Dingen mit Real ist nur, dass es der gerade auf der CPU/FPU verfügbaren nativen Länge entspricht, und das ist bei aktuellen 64-Bit FPUs nunmal Double. Daher ist in der aktuellen Delphiversion Real=Double.

Ich gebe aber zu, dass ich auch immer Double anstelle von Real nehme, da dann eindeutiger ist, was gemeint ist - auch für Nicht-Delphianer. Aber einen echten Nachteil wird man nicht haben. Wobei man in dem Link (s.u.) auch sieht, dass u.U. Real nicht gleichschnell wie Double ist, da nämlich LongInt und Integer auch unterschiedlich schnell sind, obwohl laut OH identisch :?.

\\edit: Real48 ist übrigends ca. um den Faktor 20 (bei einer Addition) langsamer als Double. (6. Beitrag v.o.)

Luckie 13. Sep 2004 23:52

Re: StrToFloat und FloatToStr
 
Wenn ich die Delphi Hilfe richtig verstanden habe ist Real48 und Real identisch mittlerweile.

dizzy 13. Sep 2004 23:55

Re: StrToFloat und FloatToStr
 
Definitiv nicht! (Bei D7)

Zitat:

Zitat von OH
Code:
Der generische Typ Real ist in der aktuellen Implementation mit dem Typ Double identisch.

Generische reelle Typen
Typ   Bereich                           Signifikante Stellen   Größe in Byte
Real   5.0 x 10^-324 .. 1.7 x 10^308   15-16                   8

Real48 ist 6 Byte lang.

Hansa 14. Sep 2004 00:29

Re: StrToFloat und FloatToStr
 
Was habt ihr mit Real48 :?:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.

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