Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: sudsaat am 14.04.11 - 15:32:09

Titel: Runden mit LotusScript oder @Functions
Beitrag von: sudsaat am 14.04.11 - 15:32:09
Hallo zusammen,

ich weiß dass dieses Thema bereits 100x angesprochen wurde und kenne auch die Beiträge hier und den Beitrag aus Best-Practices. Dennoch würde mich interessieren, ob hier jeder Notes-Client das gleiche rechnet und habe dafür eine kleine DB erstellt. Meine Vermutung seit 8 ist nämlich, dass die @Round-Function mittlerweile ebenfalls kaufmännisch rundet.

Da ich nur einen 8.52er Client parat habe, beginne ich hier eine Tabelle und würde mich auf euer Feedback und Ergebnisse freuen:

Input0,0240,0250,0340,035
LS-runden0,020,020,030,04
LS kfm runden0,020,030,040,04
@ runden0,020,030,030,04
@ kfm runden0,020,030,030,04

OK, habe gerade bemerkt, dass die Berechnung der LS-kfm-runden nicht passt (da verwende ich testweise ebenfalls die Round), hat da jemand eine Funktion parat die in LS kaufmännisch rundet?

Würde mich freuen wenn ihr mit euren Clients kurz die obigen Zahlen durchspielen und hier posten könntet.

Die Datenbank findet ihr im Fuß dieses Beitrages ;)

Danke und Grüße Thomas :)
Titel: Re: Runden mit LotusScript oder @Functions
Beitrag von: ghostmw am 15.04.11 - 16:06:58
hmmm.... sollte eigentlich nicht so schwer sein, probiers mal mit folgendem:


Function RoundItCorrect ( sngNumber As Single, intNumberOfDigitsBeforeSeparator As Integer ) As Single
   Dim sngMultiplier As Single
   Dim sngTemp As Single
   Dim sngDiff As Single
   
   sngMultiplier = Potenz10 ( -intNumberOfDigitsBeforeSeparator )
   sngTemp = sngMultiplier * sngNumber
   sngDiff = 0.5 ' wegen dem kaufmännischen Runden 0,5 an der richtigen Stellen addieren und dann abschneiden
   RoundItCorrect = Fix ( sngTemp + sngDiff ) / sngMultiplier
End Function

Function Potenz10 (inVal As Single) As Single 
   ' berechnet 10^y
   Potenz10 = Exp ( inVal! * Log(10) )
End Function

Damit kannst du alles auf x-Stellen vor- und hinter dem Komma berechnen.

Die Funktion RoundItCorrect braucht nur die Zahl und die Anzahl Stellen vor dem Komma (negative Werte sind Anzahl Stellen hinter dem Komma!).

Und fertig ist die Laube ...

War mal wieder schön in meinem alten Mathewissen vom Gymnasium zu kruschteln...

Grüsse
M. Weller