Code: Alles auswählen
Datei.s="aus|1&1|03.01.2002|domain|35.64|16"
betrag.l = ValF(StringField(Datei.s,5,"|"))
; gesamt.l + betrag.l
MessageRequester("",StrF(betrag.l),1)
Code: Alles auswählen
Datei.s="aus|1&1|03.01.2002|domain|35.64|16"
betrag.l = ValF(StringField(Datei.s,5,"|"))
; gesamt.l + betrag.l
MessageRequester("",StrF(betrag.l),1)
Du musst weiterhin beachten, dass StrF nicht rundet sondern einfach ab der gewünschten Anzahl an Stellen abschneidet.Gamer hat geschrieben: So und wieso wird nicht 35.64 Euro ausgegeben?
Code: Alles auswählen
a.f = 35.64
Debug StrF(a + 0.5, 2)
Weil du versuchst, eine Gleitkommazahl in eine Integer-Zahl zu pressen. Dadurch entfallen die Gleitkommazahlen. Die Variable betrag muss schon vom Typ float sein, sonst lässt er logischer Weise die Nachkommastellen wegfallen, da hilft dann auch kein StrF mehr.Gamer hat geschrieben:So und wieso wird nicht 35.64 Euro ausgegeben?Code: Alles auswählen
Datei.s="aus|1&1|03.01.2002|domain|35.64|16" betrag.l = ValF(StringField(Datei.s,5,"|")) ; gesamt.l + betrag.l MessageRequester("",StrF(betrag.l),1)
Okay aber soll ich das auf den Gesamtbetrag anwenden oder bei JEDEM Betrag der addiert wird?freedimension hat geschrieben:Du musst weiterhin beachten, dass StrF nicht rundet sondern einfach ab der gewünschten Anzahl an Stellen abschneidet.Gamer hat geschrieben: So und wieso wird nicht 35.64 Euro ausgegeben?
35.64 wird gespeichert als 35.6399999 (das ist die Ungenauigkeit dieses Standards, nicht von PB). Schneidest du nun ab der zweiten Stelle ab, erhältst du 35.63. Korrigieren lässt sich dies durch ein zusätzliches +0.5
Code: Alles auswählen
a.f = 35.64 Debug StrF(a + 0.5, 2)
Code: Alles auswählen
Datei.s="aus|1&1|03.01.2002|domain|35.64|16"
betrag$ = ReplaceString(StringField(Datei.s,5,"|"),".","")
Procedure.s EuroLongStringToFloatString(betrag$)
Protected betrag$
ProcedureReturn Mid(betrag$,0,Len(betrag$)-2)+"."+Mid(betrag$,Len(betrag$)-2,2)
EndProcedure
MessageRequester("",EuroLongStringToFloatString(betrag$),1)
Code: Alles auswählen
a.f = 35.64
Debug StrF(a + 0.5, 2)
Wassn daran falsch? 35.64 + 0.5 = 36.14 ! Was kommt denn bei Dir raus?Gamer hat geschrieben:Außerdem das hier liefert auch ein falsches Ergebnis:
Code: Alles auswählen
a.f = 35.64 Debug StrF(a + 0.5, 2)