Autor Thema: Runden mit LotusScript oder @Functions  (Gelesen 2805 mal)

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Runden mit LotusScript oder @Functions
« 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 :)
« Letzte Änderung: 14.04.11 - 17:22:08 von sudsaat »

Offline ghostmw

  • Aktives Mitglied
  • ***
  • Beiträge: 201
  • Geschlecht: Männlich
    • BELOS - Raum+Ressourcenmanagement unter Lotus Notes
Re: Runden mit LotusScript oder @Functions
« Antwort #1 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
Grüße
Marco Weller
Lotus Domino / Lotus Notes seit 1996 (ab 4.5x)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz