Autor Thema: Hilfe bei simpler Rechnung in @Formel  (Gelesen 15003 mal)

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Hilfe bei simpler Rechnung in @Formel
« am: 14.09.04 - 15:35:20 »
Hallo zusammen,

ich verzweifle gerade an einer simplen Berechnung in Lotus Notes mit der @Formel. Ich habe zwei Variablen in denen beiden jeweils eine Zahl mit 2 Nachkommastellen gehalten wird. Diese beiden ziehe ich von einander ab und bekomme dann eine Zahl mit ziemlich vielen Nachkommastellen zurück.

Beispiel:

_HoursIst hat als Wert 8,45
_HoursSoll hat als Wert 8


Diese Formel:
_Debit := (_HoursIst - _HoursSoll)

ergibt dann den Wert 0.449999999999999

Ich habe mittels @TextToNumber aus Textfeldern die beiden Variablen _HoursIst und _HoursSoll gefüllt und das Ergebnis der Formel auch wieder mit @Text in ein Textfeld geschrieben.

Gibt's da irgendeine Erklärung dazu? Und ich dachte ich kann mittlerweile mit der Formelsprache umgehen :-)  ???

Jenson

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #1 am: 14.09.04 - 15:38:32 »
schau mal hier rein http://www.atnotes.de/index.php?board=7;action=display;threadid=14989;start=0 da ist so eine ähnliche Thematik beschrieben
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #2 am: 14.09.04 - 15:45:15 »
Hallo eknori,

Das ist jetzt ein echtes Problem. Ich habe auch einfach mal versucht den Wert einfach per  @Round( <ERGEBNIS>; 0,01) zu runden. Das wiederrum führt zum totalen Abbruch des Scriptes.

Wie bringe ich das nun unserem Chef bei.... Es geht dabei um eine Simple Berechnung von Überstunden ... Ts...

Jenson

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #3 am: 14.09.04 - 15:52:31 »
hmm, was passiert denn, wenn man das Ganze in Minuten umrechnet, die Subtraktion durchführt und dann das ergebnis wieder in stunden ?
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #4 am: 14.09.04 - 15:53:37 »
Nehme an, Du meinst Abbruch der Formel. Was heisst hier übrigens total? Fehlermeldung? Kein Resultat? Warum stellst Du nicht die Anzeigeoptionen auf 2 Stellen nach dem Komma?
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #5 am: 14.09.04 - 15:53:38 »
Das wäre eine Idee... das Probiere ich mal schnell aus. Werde berichten ...


Jenson

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #6 am: 14.09.04 - 15:58:27 »
@Semaphorus:

Das ist eine Datenbank in der ich in einer Maske die Möglichkeit habe eine @Formel einzugeben. Diese wird dann beim  Aufrufen eines Dokumentes über das Web vorher ausgeführt und schreibt berechnete Werte in ein Template. Alles was zum Schluss ausgegeben wird ist reiner Text.

Totaler Abbruch heisst, dass ich bei der Ausgabe des Dokumentes über das Web alle Felder die ich bis zu dieser Stelle in der Formel ausgebe angezeigt werden. Alle die nach dieser Stelle in der Formel berechnet werden, fehlen in der Webausgabe.

Jenson

Offline cococo69

  • @Notes Preisträger
  • Senior Mitglied
  • ****
  • Beiträge: 286
  • Geschlecht: Männlich
  • Super dieses Forum!!!
    • Mein Hobby...
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #7 am: 14.09.04 - 15:58:51 »
Ich habe auch einfach mal versucht den Wert einfach per  @Round( <ERGEBNIS>; 0,01) zu runden. Das wiederrum führt zum totalen Abbruch des Scriptes.

Bei mir ergibt      @Round (8,45-8; 0,01)     als Ergebnis 0,45

System stürzt NICHT ab!

Gruß Armin

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #8 am: 14.09.04 - 16:00:42 »
Na, das mit totalem Abbruch zu bezeichnen, ist ein bisschen unsinnig - sorry. Da stimmt wohl mit der Syntax etwas nicht. Poste doch mal die gesamte Formel
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #9 am: 14.09.04 - 16:06:23 »
Die Formel hat derzeit 12 DIN-A4 Seiten Umfang ... Ich kann aber mal den Ausschnitt posten um den es eigentlich geht:

_HTMLHoursComplete hat hier laut Ausgabe: 8,5
_WorkingHours hat hier laut Ausgabe: 8

-----SCHNIPP------

_HoursIst    := @TextToNumber(_HTMLHoursComplete);
   _HoursSoll := @TextToNumber(_WorkingHours);
   _Debit          := (_HoursIst - _HoursSoll);
   

  @if((@isError(_HoursInteger) | (@isError(_Debit))); "";
     @Do(
        @if(_Debit < 0; _HTMLHoursUnder := @Text(_Debit); "");
        @if(_Debit > 0; _HTMLHoursOver :=@Text(_Debit); "")
     )
   );


------ SCHNAPP -------

Als Ergebnis bekomme ich dann diese 0.4999999999 ....

Jenson

Offline cococo69

  • @Notes Preisträger
  • Senior Mitglied
  • ****
  • Beiträge: 286
  • Geschlecht: Männlich
  • Super dieses Forum!!!
    • Mein Hobby...
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #10 am: 14.09.04 - 16:19:19 »
Hallo Jenson,

mit dieser Formel erhalte ich 0,45 als Ergebnis:

_HoursIst    := @TextToNumber("8,45");
  _HoursSoll := @TextToNumber("8");
  _Debit          := (_HoursIst - _HoursSoll);
@Round(_Debit; 0,01)

Wo ist dann das Problem?

Armin

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #11 am: 14.09.04 - 16:31:24 »
Sehr merkwürdig - bei mir ist das Ergebnis von Armins Formel auch ohne @Round 0,45 ... Wenn da zwischendurch noch eine Division laufen würde (wie in dem von Ulrich angesprochenen Thread), würde ich es ja einsehen, aber bei einer Subtraktion ...

Bernhard
« Letzte Änderung: 18.11.04 - 23:28:58 von koehlerbv »

Offline cococo69

  • @Notes Preisträger
  • Senior Mitglied
  • ****
  • Beiträge: 286
  • Geschlecht: Männlich
  • Super dieses Forum!!!
    • Mein Hobby...
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #12 am: 14.09.04 - 16:37:14 »
Hallo Bernhard,

wo läßt du die Formel rechnen? in einem Feld? ist dieses Feld auf 2 Nachkommastellen formatiert?

Ich lasse obige Formel im Betreff einer Mail rechnen (mit Shift + F9) und erhalte OHNE @Round  0,4499999... und MIT @Round 0,45

Armin

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #13 am: 14.09.04 - 16:52:51 »
Nö, das war ein Buhtong samt Prompt.
A-Bär: R5 !

Selbiges - wie erforderlich - in R6: Gleiches Ergebnis wie bei Dir, Armin.
Das ist damit ein ganz eindeutiger Bug in R6 !

Bernhard

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #14 am: 14.09.04 - 17:18:33 »
Ich kann das wie gesagt auch nicht in einem Feld rechnen, sondern einfach in einer Variablen innerhalb meiner Formel. Die Daten für die Berechnung bekomme ich als text aus einem DBLookup.

Jenson

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #15 am: 14.09.04 - 18:57:17 »
Bernhard: Die Rundungsdifferenz in diesem Fall hat nix zu tun mit der Operation, aus der das Ergebnis herauskommt, sondern mit der Umrechnung von Binär zu Dezimal und umgekehrt, deshalb kann es auch bei einer Subtraktion zu gerundeten Ergebnissen kommen. Da in R6 die gesamte @Formel-Engine neu geschrieben wurde, ist es durchaus klar, dass die Rundungsfehler nun halt an anderen Orten zuschlagen als dies noch zu R5-Zeiten der Fall war, also kein Bug in R6, sondern genau das Problem, auf das Ulrich hingewiesen hat: Rundungsungenauigkeiten. Man vergesse nicht, dass Umrechnung von einem Zahlensystem ins andere mit Multiplikation (und damit mit Rundungsproblemen und Fehlerfortpflanzung) zu tun hat.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #16 am: 14.09.04 - 19:14:30 »
@TextToNumber ("8,45") - @TextToNumber ("8") = 0,449999999

Wenn das kein Bug ist, dann weiss ich nicht, was ein Bug sein soll !!!
Notes betreibt hier "Schätzen Sie mal !"

"Wieviel ist 18 plus 5"? "Ungefähr 22".

Auf genau das läuft das hinaus. Das es bei Zwischenergebnissen zu Problemen kann - okay, das sehe ich noch ein. Aber
"8" als Zahl ist bei Notes 7,9999999
dafür habe ich NULL Verständnis.

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #17 am: 14.09.04 - 19:23:16 »
Sorry. Bernhard, aber wenn Du nicht mit BCD-Format rechnest, kann Dir tasächlich mit Print 8 eine 7,999999999 (ok, das Beispiel ist unpassend .... )oder sowas rauskommen, woher willst Du wissen, wie präzise die binäre Darstellung Deiner 8 ist? Diese Probleme kann man nur beheben, wenn man BCD als Datentyp verwendet, und der steht in Notes leider nicht zur Verfügung. Allein die Konvertierung der Datenbasis ist bereits fehlerbehaftet. Wenn Du 1/3 in Dezimal darstellst, gibts eine unendliche Zahl, wenn Du 1/3 im Trinärsystem darstellst, ist das 0,1 also ohne irgend eine Periode darstellbar. Zwischen Dezimal und Binär gibt es ganz ähnliche Erscheinungen
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #18 am: 14.09.04 - 19:30:09 »
Der Background ist mir schon klar, Jens. Aber das ändert nichts, überhaupt nichts daran, dass Notes hier absoluten Mist baut - und das erst ab R6.

Bernhard

Offline cococo69

  • @Notes Preisträger
  • Senior Mitglied
  • ****
  • Beiträge: 286
  • Geschlecht: Männlich
  • Super dieses Forum!!!
    • Mein Hobby...
Re:Hilfe bei simpler Rechnung in @Formel
« Antwort #19 am: 14.09.04 - 20:12:57 »
Ich kann das wie gesagt auch nicht in einem Feld rechnen, sondern einfach in einer Variablen innerhalb meiner Formel. Die Daten für die Berechnung bekomme ich als text aus einem DBLookup.

Jenson

Hallo Jenson,

Bug hin oder her... ("mein Bug dein Bug........")
Nehmen wir diese Rundungsproblematik einfach als gegeben, was spricht denn nun gegen ein @Round um dein Ergebnis???

Armin

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz