Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String --> Single Single-->String (https://www.delphipraxis.net/90478-string-single-single-string.html)

DelphiManiac 18. Apr 2007 09:41


String --> Single Single-->String
 
Hallo ich habe habe folgendes Problem.
Ich arbeite mit dem Datentyp Single (einfache Genauigkeit nach IEEE)

Nun möchte ich Konvertierungen vom Typ String ( beispielsweise beim Auslesen eines Single Wertes aus einer INI-Datei)
in den Typ Single wandeln,

mache es zurzeit mit der Funktion StrToFloat:

Delphi-Quellcode:
 function StrToFloat(const S: string): Extended; overload;
doch hier habe ich das Problem, dass Ungenauigkeiten entstehen, da der Rückgabetyp von StrToFloat höher auflöst (Extended) als
der Datentyp Single...


Hoffe ihr versteht meine Problematik.

Danke euch

Robert Marquardt 18. Apr 2007 09:50

Re: String --> Single Single-->String
 
Max doch einfach eine Hex-Repraesentation des Single.
Delphi-Quellcode:
type
  THexSingle = record
  case Boolean of
    False: (Value: Single;);
    True: (Hex: array [0..SizeOf(Single)-1] of Byte;);
  end;

var
  Conv: THexSingle;
  S: string;
  I: Integer;
begin
  Conv.Value := 7.326;
  S := '';
  for I := Low(Conv.Hex) to High(Conv.Hex) do
    S := S + Format('%.2x', [Conv.Hex[I]]);
end;
Ich glaube die umgekehrte Konversion kriegst du alleine hin.

DelphiManiac 18. Apr 2007 09:54

Re: String --> Single Single-->String
 
Hi!!

Würde gerne eine Funktion haben, die mir Bsp.: '1,2345678' als Single speichert
Gibt es keine Delphi Funktion die mir aus einem String den entsprechenden Single zurückgibt (nicht als Extended)?

TeronG 18. Apr 2007 10:15

Re: String --> Single Single-->String
 
:gruebel:
Und einfach die Extended runden geht nicht!? (Genauigkeit wegrunden: Weichzeichner für Zahlen :mrgreen: )

OldGrumpy 18. Apr 2007 10:18

Re: String --> Single Single-->String
 
Gibt es denn einen zwingenden Grund, mit Single zu arbeiten? Ich habe hier zufällig gerade ein Projekt vorliegen wo ebendies zu groben Darstellungsungenauigkeiten führt (was allerdings auch teilweise auf "unelegante" Handhabung zurückzuführen ist...) :)

DelphiManiac 18. Apr 2007 10:19

Re: String --> Single Single-->String
 
Wie meinst du das mit wegrunden?

Nunja ich habe folgende Stringdarstellung einer Single Zahl:

'1,2345678'

daraus ergibt sich

1,2345677844578 oder so ähnlich

DelphiManiac 18. Apr 2007 10:21

Re: String --> Single Single-->String
 
@OldGrumpy:

Ja der Datentyp Single ist hier zwingend erforderlich,
da eine Kommunikation mit einem uController besteht und der auf Single-Basis rechnet.

Deswegen kann ich nicht höher gehen als der uC kann...

OldGrumpy 18. Apr 2007 10:24

Re: String --> Single Single-->String
 
Da hab ichs ja richtig gut, hier rechnet die Software alles in grosse Integers um die dann an den µC gehen :)

TeronG 18. Apr 2007 10:28

Re: String --> Single Single-->String
 
Zitat:

Zitat von DelphiManiac
Nunja ich habe folgende Stringdarstellung einer Single Zahl:

'1,2345678'

daraus ergibt sich

1,2345677844578 oder so ähnlich

Schon komischer ... wenn ich mich mit den Zahlentypen besser auskennen würde währs bestimmt logisch ^^
naja das mit dem Runden hab ich grade getestet und so einfach mit roundto(x,-7) geht's doch nicht :(

DelphiKlaus 18. Apr 2007 10:39

Re: String --> Single Single-->String
 
Bei einer Konvertierung von String nach Single nach String wird in den seltensten Fällen wieder das Original herauskommen, da Single nur sieben bis acht Stellen speichern kann. Es kann bei reellen Zahlen nur eine sehr beschränkte Teilmenge des Zahlenvorrats abgebildet werden und das führt dann eben zu Rundungsproblemen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr.
Seite 1 von 3  1 23      

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 by Thomas Breitkreuz