PDA

View Full Version : %float rundet falsch !!



jogisarge
03-05-06, 10:04
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

Fuerchau
03-05-06, 10:36
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.

BenderD
03-05-06, 10:50
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.

Fuerchau
03-05-06, 10:56
Rundung ist nicht erforderlich, wenn das Empfangsfeld genug NK definiert hat. In diesem Beispiel "myfield = %dec(mychar:11:2)"

jogisarge
03-05-06, 10:56
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

malzusrex
03-05-06, 11:22
Nein,

%Dec und %DecH geht auch mit Alpha (Seit V5R1 ??)

Alpha = 15,12




Eval Num = %DecH( Alpha : 5: 2)

Gruß Ronald

mwithake
05-05-06, 10:46
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