Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu Strings (https://www.delphipraxis.net/98877-frage-zu-strings.html)

shmia 3. Sep 2007 15:10

Re: Frage zu Strings
 
Inzwischen sollte klar sein, dass deine Messwerte als Strings immer mehr Platz benötigen, als ein binärer Datentyp wie Single, Real oder Double.
Jetzt kommt es noch auf den Wertebereich und die Genauigkeit an.
Man könnte mit einem Festkommaformat viel an Platz und Gewschwindigkeit verbessern.
Angenommen, du bräuchtest nur eine Nachkommastelle. Das entspräche (aufgerundet )4 Bit.
Ein Integer mit 27 Bit+(1Bit Vorzeichen) für die Vorkomma und 4 Bit für die Nachkommastellen wäre dann sehr effizient.

RavenIV 3. Sep 2007 15:11

Re: Frage zu Strings
 
Warum nimmst Du denn dann keinen Single?
Müsste doch reichen für Deine Zwecke...

Code:
Typ     Bereich                 Signifikante Stellen Größe in Byte  
Real48   -2,9 x 10^39 .. 1,7 x 10^38         11-12          6   
Single  -1,5 x 10^45 .. 3,4 x 10^38         7-8            4   
Double  -5,0 x 10^324 .. 1,7 x 10^308       15-16          8   
Extended  -3,6 x 10^4951 .. 1,1 x 10^4932   10-20         10   
Comp    -2^63+1 .. 2^63 1                   10-20          8

Martin K 3. Sep 2007 15:44

Re: Frage zu Strings
 
Zitat:

Zitat von maximus Caesar
Die Zahlen haben maximal 3 Vorkomma und 2 Nachkomma Stellen...

Dann reicht doch ein Integer vollkommen, die beiden hintersten Stellen legst du dann einfach als Nachkommastellen fest.
Zum Umwandeln in Real kannst du dir dann etwa solche Funktionen basteln:
Delphi-Quellcode:
function RealToMeinFormat(const Value: Real): Integer;
begin
  Result := Trunc(Value * 100);
end;

function MeinFormatToReal(const Value: Integer): Real;
begin
  Result := (Value div 100) + (Value mod 100) / 100;
end;
Die Speicherung deiner Datensätze als Integer dürfte ziemlich effizient sein, ein Integer benötigt nur 4 Byte.

//Nachtrag:
@RavenIV: Single ist ziemlich ungenau bei einer festen Anzahl an Nachkommastellen.
Er hat 2 Nachkommastellen bei seinen Daten und das wird bei Single schnell ungenau.
Beispiel: 1,73 wird bei Single zu 1,73000001907349.
Deswegen würde ich ein Integer bevorzugen, hier kann es keine Rundengsfehler geben und benötigt genauso viel Speicherplatz wie ein Single.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.
Seite 2 von 2     12   

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