+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Runden in LL


(Guest) #1

Moin,
ich habe ein Problem mit der Rundungsfunktion in LL.
Ich habe in Delphi Werte die einzeln übergeben
und beim Ausdruck in LL nochmals berechnet werden.
Also zum Beispiel Rabatt auf der Position
Menge 1
Preis 1,05
Rabatt 10 %

Wenn ich mengepreis(rabatt / 100) rechne
ergibt sich ein Rabattwert von 0,105

Mit round( …,2) rundet LL hier immer nach oben, Bringt mir also 0,11.
Das Bankersrounding oder auch gerade Zahl Regel rundet den Wert
immer zur geraden Zahl hin. Würde also in diesem Fall 0,10 zurückgeben.
bei
Menge 1
Preis 1,15
Rabatt 10 %
Ist die Berechnung korrekt, weil hier für beide Rundungsfälle 0,12 rauskommen muss.

Hat irgendjemand einen Plan wie ich ohne seitenweise Conditions im LL
das Bankersrounding abgebildet bekomme ?

Gruß und Danke im Voraus


(Guest) #2

Hallo Jens,

seit Release 14.007 gibt es eine Option, um zwischen kaufmännischem
und mathematischem Runden umzuschalten:
#define LL_OPTION_ROUNDINGSTRATEGY (163)
#define LL_ROUNDINGSTRATEGY_BANKERSROUNDING ( 0)
#define LL_ROUNDINGSTRATEGY_ARITHMETIC_SYMMETRIC ( 1)

HTH,
Joachim

Jens Delling schrieb:

Moin,
ich habe ein Problem mit der Rundungsfunktion in LL.
Ich habe in Delphi Werte die einzeln übergeben
und beim Ausdruck in LL nochmals berechnet werden.
Also zum Beispiel Rabatt auf der Position
Menge 1
Preis 1,05
Rabatt 10 %

Wenn ich mengepreis(rabatt / 100) rechne
ergibt sich ein Rabattwert von 0,105

Mit round( …,2) rundet LL hier immer nach oben, Bringt mir also 0,11.
Das Bankersrounding oder auch gerade Zahl Regel rundet den Wert
immer zur geraden Zahl hin. Würde also in diesem Fall 0,10 zurückgeben.
bei
Menge 1
Preis 1,15
Rabatt 10 %
Ist die Berechnung korrekt, weil hier für beide Rundungsfälle 0,12 rauskommen muss.

Hat irgendjemand einen Plan wie ich ohne seitenweise Conditions im LL
das Bankersrounding abgebildet bekomme ?

Gruß und Danke im Voraus


(Guest) #3

Hallo Joachim,
vielen Dank für die Anwort. Ich benutze LL12.
Da geht das leider noch nicht. Habe mein Problem jetzt in Delphi
gelöst (Werte entsprechend übergeben …)
Die Umstellung auf LL12 hat damals echt Nerven gekostet, weil da
die Projekte eigentlich alle neu angelegt werden mussten um die
Datasets den entsprechenden Feldern zuzuweisen. Dann noch das
ganze Theater mit den NULL - Werten wo man jede Condition
überprüfen musste…
Daher hänge ich lieber mit den neuen Versionen immer
etwas hinterher.

Na ja, irgendwann wird es werden.
Gruß Jens

Hallo Jens,

seit Release 14.007 gibt es eine Option, um zwischen kaufmännischem
und mathematischem Runden umzuschalten:
#define LL_OPTION_ROUNDINGSTRATEGY (163)
#define LL_ROUNDINGSTRATEGY_BANKERSROUNDING ( 0)
#define LL_ROUNDINGSTRATEGY_ARITHMETIC_SYMMETRIC ( 1)

HTH,
Joachim

Jens Delling schrieb:

Moin,
ich habe ein Problem mit der Rundungsfunktion in LL.
Ich habe in Delphi Werte die einzeln übergeben
und beim Ausdruck in LL nochmals berechnet werden.
Also zum Beispiel Rabatt auf der Position
Menge 1
Preis 1,05
Rabatt 10 %

Wenn ich mengepreis(rabatt / 100) rechne
ergibt sich ein Rabattwert von 0,105

Mit round( …,2) rundet LL hier immer nach oben, Bringt mir also 0,11.
Das Bankersrounding oder auch gerade Zahl Regel rundet den Wert
immer zur geraden Zahl hin. Würde also in diesem Fall 0,10 zurückgeben.
bei
Menge 1
Preis 1,15
Rabatt 10 %
Ist die Berechnung korrekt, weil hier für beide Rundungsfälle 0,12 rauskommen muss.

Hat irgendjemand einen Plan wie ich ohne seitenweise Conditions im LL
das Bankersrounding abgebildet bekomme ?

Gruß und Danke im Voraus


(Guest) #4

Hallo Jens,

das gleiche Problem hatte ich ebenso, auch unter LL14.
Mit dieser Berechnung hat es funktioniert:
LocCurr$(Betrag*(MwSt/100)+Betrag)

Ich wei=DF das dies umst=E4ndlich ist, aber es hat funktioniert. Auch auf =
die richtige Klammerstellung ist zu achten.

Gru=DF
Eric


(Guest) #5

Hallo,

ich habe ebenfalls ein Problem Werte in LL zu runden.

Ich brauche eine Funktion für das Versandwesen.
Dort sollen die kg-Angaben immer auf ganze Zahlen gerundet werden.
Mit folgender Funktion habe ich es geschafft, das die Werte immer auf ganze Zahlen gerundet werden und die Maßeinheit mitangzeiegt wird.

Fstr$ (PackingCollection.GrossWeight,"?&")+ " " + (PackingCollection.GrossWeightUnit)

Jetzt muss diese Funktion für den Versandbereich aber folgendermaßen erweitert werden:
Werte die kleiner als 0,5 kg sollen nicht auf 0 sondern immer auf 1 aufgerundet werden, da im Versandwesen Werte kleiner 0,5 kg immer mit 1kg gekennzeichnet werden.

Hat jemand einen Vorschlag, wie ich das lösen könnte?

Gruß
Tanja


(Guest) #6

Hallo Tanja,
ich denke, das kannst du folgendermaßen machen:
Fstr$ (if (PackingCollection.GrossWeight < 0.5, 1, PackingCollection.GrossWeight),"?&")+ " " + (PackingCollection.GrossWeightUnit)

Für Werte < 0.5 soll 1 verwendet werden, sonst der Wert aus PackingCollection.GrossWeightUnit.

Gruß
Simon