Seite 1 von 1

StrF ungenau

Verfasst: 15.04.2016 14:42
von Tommy Lee
Hallo Forum,

ich muss ein Messfile konvertieren (*.dat mit VB6 erstellt - ein Alptraum) und bin sehr weit damit.
Nur die Zeitwerte zeigt mit PureBasic falsch an, weil scheinbar was beim konvertieren rundet.
Hier die Schlüsselstelle:

Code: Alles auswählen

Zahl=ReadDouble(#Datei)
    ;Dummy=Zahl*1e12
    Debug "Original aus Datei: "
    Debug Zahl
    ;Debug Dummy
    Debug "Mit StrF "+#CRLF$+StrF(Zahl,10)
    Dateifelder(Lauf1)\dtTime=StrF(Zahl,10)
ergibt dann:

Code: Alles auswählen

Original aus Datei: 
42433.674664351849
Mit StrF 
42433.6757812500
Original aus Datei: 
42433.675011574072
Mit StrF 
42433.6757812500
Original aus Datei: 
42433.675358796296
Mit StrF 
42433.6757812500
Original aus Datei: 
42433.675706018519
Mit StrF 
42433.6757812500
Original aus Datei: 
42433.676053240742
Mit StrF 
42433.6757812500
Original aus Datei: 
42433.676400462966
Mit StrF 
42433.6757812500
Die Zahlen sind das VB6-Date-Format: Vorkomma sind die Tage seit 1900, die Nachkommastellen multipliziert mit 24 ergibt Stunden, Minuten, Sekunden.
Muss also genau sein - der Artefakt allerdings bewirkt, dass nicht (wie im Originalmessfile) die Messzeit schön konstant hochgezählt wird (42433.674664351849, 42433.675011574072 etc.), sondern bei z. B. 20 verschiedenen Messungen nur zwei verschiedene Floatwerte angezeigt werden (obige Liste ist abgekürzt und zeigt nur einen Wert: 42433.6757812500).

Ich muss leider einen String am Ende haben, weil alle Werte in einem ListIconGadget drinstehen.

Wie kann ich das lösen?

Danke,

Tom

Re: StrF ungenau

Verfasst: 15.04.2016 14:48
von Kiffi
Du kannst StrD() verwenden.

Als zweiten Parameter trägst Du die Anzahl der Nachkommastellen ein (hier: 12).

Grüße ... Peter

Re: StrF ungenau

Verfasst: 15.04.2016 14:51
von Tommy Lee
Ach Du Schande, ich Trottel...

Aber: Herzlichen Dank & Schönes Wochenende!