View Full Version : %float rundet falsch !!
Hallo zusammen !
Ich lese eine CSV-Datei auf der AS400 per ILE ein.
Das klappt alles soweit !
Problem :
Wenn ich versuche mit %float einen numerischen Wert aus einem Alphafeld in ein numerisches Feld zu übertragen, dann kommt im numerischen Feld ein falsch gerundeter Wert an.
Alpha '25,13' -> %float -> Num 25,12
Unser Release ist V5R3
Hat jemand ne Idee ??
mfg
Jogi
Warum nutzt du nicht %DEC() ?
Das Problem bei Float ist, dass die Zahlen nicht genau sondern nur ein Näherungswert sind.
25,13 => 25,12999999978
Bei der Übertragung nach Dezimal wird dann leider abgeschnitten und nicht gerundet.
Hallo,
aber auch der rundet nicht, da gibt es dann noch round und mit H option resdecpos geht (im embedded SQL) endgültig die Würfelei los!!!
Dieter Bender
Warum nutzt du nicht %DEC() ?
Das Problem bei Float ist, dass die Zahlen nicht genau sondern nur ein Näherungswert sind.
25,13 => 25,12999999978
Bei der Übertragung nach Dezimal wird dann leider abgeschnitten und nicht gerundet.
Rundung ist nicht erforderlich, wenn das Empfangsfeld genug NK definiert hat. In diesem Beispiel "myfield = %dec(mychar:11:2)"
Hallo nochmal !
Laut meiner Hilfe erwartet %dec doch eine Zahl, oder ?
Wie kann ich denn am einfachsten eine Zahl 25,13 in einem Textfeld, in eine numeriches Feld schreiben.
Das Einlesen von CSV-Dateien wurde doch schon oft behandelt, da muss dieses Problem doch dauernd auftreten,oder?
Gruss jogi
Nein,
%Dec und %DecH geht auch mit Alpha (Seit V5R1 ??)
Alpha = 15,12
Eval Num = %DecH( Alpha : 5: 2)
Gruß Ronald
Warum nutzt Du nicht zum Einlesen der CSV-Datei den Befehl CPYFRMIMPF und kopierst die CSV-Datei damit direkt in eine DB-Tabelle?
CPYFRMIMPF und CPYTOIMPF nutzt zum Import/Export CSV-Dateien (oder ähnlich aufgebaute Dateien).
Gruß
M.Withake