Autor Thema: Rechengenauigkeit INTEL ???  (Gelesen 7111 mal)

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Rechengenauigkeit INTEL ???
« am: 05.07.04 - 13:45:40 »
Mal wieder

Blöde Sache, wie erklärt mans seinen Chef, wenn er überhaupt keinen Bock hat sich die Erklärung (die er eh nicht versteht und verstehen will) anzuhören.

Ganz einfache Anwendung unter Notes 5.
Maske, mehrere Zahlenfelder, ich addier dabei zwei Felder auf:
184,8 + (-184,5).
(minus weils ne Gutschrift ist).
Herauskommen müsste 2,3
Herauskommt aber leider 2,300000000000001
Im Dokument wars zwar nicht zu sehen aber in der Ansicht (weil ich nicht die Spalteneigenschaften auf 2 Dezimal beschränkt hatte) fiel es natürlich granatenmäßig auf.
 
BTW Excel 97 rechnet genauso.

In dieser speziellen Anwendung isses nicht soo dramatisch, aber es gibt ja auch noch andere Anwendungen bei denen man die Nachkommastellenproblematik durchaus hat.

Hallo Entwickler:
Fangt Ihr sowas programmiertechnisch durch geeignete Routinen ab ? Oder lasst Ihr wenns ums Thema genaueres Rechnen unter Notes geht, die Finger weg ?
(Wobei es ja genügend Busienesspartner software gibt mit aufwendigen Rechnungen , z.B. Projektmanagementsoftware unter Notes).

Liegts an INTEL überhaupt, rechnet AMD hier anders ?


TIA, Holcomb
PS Auch ohne das Minusvorzeichen kommt bei einer Subtralktion die lange Dezimalzahl raus.
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Marinero Atlántico

  • Gast
Re:Rechengenauigkeit INTEL ???
« Antwort #1 am: 05.07.04 - 19:11:18 »
Zur Not kannst du das mit einer relativ aufwendigen Spaltenformel abfangen.
So in der Art.
Code
valTemp := @right(@Text(val);",");
etc.. 
@TextToNumber(
Da existiert aber sicherlich noch eine bessere Lösung.

Ansonsten kann ich deinen Chef verstehen.
Das muss man irgendwie hinbekommen.
Als Anwender würde ich Erklärungen bezüglich der Einschränkungen des Registerspeichers auch nicht akzeptieren. Interessieren tät mich das auch nicht.
 
« Letzte Änderung: 05.07.04 - 19:13:58 von Marinero Atlántico »

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.710
  • Geschlecht: Männlich
Re:Rechengenauigkeit INTEL ???
« Antwort #2 am: 05.07.04 - 19:17:32 »
da gab es doch mal ( lang, lang ist es her ) diesen Rechenfehler im Pentium ... http://www.krisennavigator.de/mafa3-d.htm Sollte der etwa immer noch da sein  ???
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Marinero Atlántico

  • Gast
Re:Rechengenauigkeit INTEL ???
« Antwort #3 am: 05.07.04 - 19:26:14 »
compadres,

es sollte doch möglich sein, unserer furchtlosen Groupwareplattform durch ein paar sause-schnelle @commands klarzumachen, dass sie die Zahl auf 2 Nachkommastellen abrundet ???
Ohne das damit zu erklären, dass eine Chaostruppe wie Intel natürlich nicht in der Lage ist, die von uns gewöhnten Qualitätsstandards von Iris einzuhalten  ;D

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.710
  • Geschlecht: Männlich
Re:Rechengenauigkeit INTEL ???
« Antwort #4 am: 05.07.04 - 19:31:47 »
der Fehler tritt auch bei meinem AMD auf:

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Marinero Atlántico

  • Gast
Re:Rechengenauigkeit INTEL ???
« Antwort #5 am: 05.07.04 - 19:53:40 »
Java:
Code
double zahl1 = 184.8;
double zahl2 = 184.5;
double result = zahl1 - zahl2;
return result;
ergibt:

Das hat etwas mit allgemeinen Ungenauigkeiten von double auf 32-bit Rechnern zu tun.

Kann das aber mit
http://java.sun.com/j2se/1.4.2/docs/api/java/text/NumberFormat.html
lösen.
Bei wirklich großen oder kleinen Zahlen gibt es immer noch:
http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html

« Letzte Änderung: 05.07.04 - 19:55:04 von Marinero Atlántico »

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.710
  • Geschlecht: Männlich
Re:Rechengenauigkeit INTEL ???
« Antwort #6 am: 05.07.04 - 19:54:55 »
ähhh ist es mit der Rechengenauigkeit von Holocomb auch nicht so weit her ??

184,8 + (-184,5).
(minus weils ne Gutschrift ist).
Herauskommen müsste 2,3

@Holocomb: gaaaanz sicher ??

Ich habe mal Adam Riese und Schürmanns Rechenbuch befragt; da kommt aber 0,3 raus ...

Möglicherwesie sehen das gewisse Herrschaften im Takonomi (Yakatomi oder wie auch immer ) Tower wieder als Beleidigung an; ist aber nicht so gemeint ;-)
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Marinero Atlántico

  • Gast
Re:Rechengenauigkeit INTEL ???
« Antwort #7 am: 05.07.04 - 19:57:46 »
Float wird noch ungenauer:
Code
float zahl1 = 184.8f;
float zahl2 = 184.5f;
float result = zahl1 - zahl2;
return result;

« Letzte Änderung: 05.07.04 - 19:58:32 von Marinero Atlántico »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Rechengenauigkeit INTEL ???
« Antwort #8 am: 05.07.04 - 20:00:27 »
Leute, solange man binär rechnet und nicht mit BCD, sind die Rundungsfehler inhärent und haben nix mit Fehlern im Pentium oder was auch immer zu tun. Das hängt ganz einfach damit zusammen, dass sich die endlich darstellbaren Zahlen des Dezimalsystems nicht unbedingt mit endlichen Zahlen des Binärsystemes darstellen lassen, es gibt also keine 1 zu 1 Relation zwischen Dezimal und Binär, und damit kommt es zwangsläufig zu Rundungsfehlern, ob man will oder nicht. Das mit dem Abfangen hat auch seine Nase, jedes Runden vergrössert den sowieso schon vorhandenen Fehler und wir bekommen Probleme mit einem Ding, das sich Fehlerfortpflanzung nennt.

Da hatte ich mal einen Informatiker als Angestellten, der das Problem selber unterschätzt hat  Er hat es zwar aus der Ausbildung heraus gekannt, aber nie wirklch erlebt. Da musste man einen Wassertropfen am linken Rand des Bildschirmes herunterlaufen lassen. Um den nächsten Schritt zu berechnen, dividiere man die Höhe des Bildschirms durch die Anzahl Schritte, die man machen will, tönt ganz einfach. Der Mann hat dann bei jedem Rechenschritt schön brav gerundet. In der VGA-Auflösung, die damals noch üblich war, kam der Tropfen auch wie gewünscht unten am Bildschirm an. Wenn wir dann für die Produktion auf 800 x 600 umschalteten, da passierte etwas merkwürdiges: der Tropfen blieb nach 2/3 der Strecke einfach stehen. Ich hab gleich gefragt, hast Du zu früh gerundet? Er wollte mir das nicht glauben, dass das einen derart grossen Effekt haben könnte, so dass ich ihm nahelegte, ändere mal den Code, mach die Rundung erst ganz am Schluss ..... und siehe da, der Tropfen landete wie gewünscht bei beiden Auflösungen korrekt unten am Bildschirm.
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 AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:Rechengenauigkeit INTEL ???
« Antwort #9 am: 06.07.04 - 08:45:58 »
Hallo Leute, erstmal allen danke für das feedback.

mehr später, weil ich erstmal was schnell für Chef machen muß.

@eknori
Die zweite Zahl war 182,50 und nicht 184,5.- Sorry mein Fehler.
Korrekt lautet es also 184,80 + (- 182,50).
Und dann kriegt man eben die Nachkommastelle.
Merci auch für das AMD Beispiel, hat mich auch interessiert.

Bis später, Holcomb,
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:Rechengenauigkeit INTEL ???
« Antwort #10 am: 06.07.04 - 09:32:28 »
@ Marinero,:

Wegen Cheffe, bleibt nur eins.
"schummeln". Sicherstellen, daß in Dokument und auch view nur begrenzte Anzahl der Nachkommastellen. Und dann hoffem, daß Chef nicht auf die Idee kommt, in dei Feleigenschaften zu gucken.   <g>

Punkt 2: AS/400 rechnet auch nicht anders. Da kam das gleich heraus, auch hinten die " ...01".

@semeea:
das mit dem einmaligen Runden erst am Ende aller Rechenoperationen war mir an sich klar.
Aber danke für Deine Erlärung.

Bis später, Holcomb
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:Rechengenauigkeit INTEL ???
« Antwort #11 am: 06.07.04 - 10:01:31 »
Konsequenz:
Ich darf dem nach nie blauäugug abprüfen ob ein Wert, der aus einer aritmetischen Operation stammt,  = 0 ist, auch wenn er es nach Adam Riese aus Staffelstein eigentlich sein müsste.

Da ja leider
(184,8 - 182,5) - 2,3  <> 0  

:-/.

Holcomb

Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Marinero Atlántico

  • Gast
Re:Rechengenauigkeit INTEL ???
« Antwort #12 am: 06.07.04 - 10:09:01 »
Also Holcomb das ist wirklich kein Schummeln, wenn du die Zahlen entsprechend für das Display formatierst.
Die Feldeigenschaftenbox ist nicht für die Anwender gedacht, sondern für Admins und Entwickler.
Zählst, ist auf dem Platz (Fussball) oder
Zählt ist der View und im Dokument (Notes).  
Jens hat ja die Problematik der Repräsentation von Bruchzahlen (oh je das heisst anders, aber ich bin ohne Bücher) aufgezeigt.
Wenn ich mich recht erinnere haben z.B. RDBMS z.B. den Datentyp Decimal, um diese Float/Double Probleme zu umgehen. Da wird aber glaub ich auch intern gerundet.
Selbst BigDecimal in Java hat sicher irgendwelche Grenzen, wo es nicht mehr genau ist.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Rechengenauigkeit INTEL ???
« Antwort #13 am: 06.07.04 - 11:44:21 »
Völlig richtig, dass eine Prüfung auf = extrem gefährlich ist, egal ob da auf der einen Seite eine Null ist oder ein anderer Wert, da müsste man ein Epsilon definieren, sprich einen Bereich, innerhalb dem man annimmt, dass die Werte tatsächlich gleich sind.
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 AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:Rechengenauigkeit INTEL ???
« Antwort #14 am: 06.07.04 - 18:27:59 »
Völlig richtig, dass eine Prüfung auf = extrem gefährlich ist, egal ob da auf der einen Seite eine Null ist oder ein anderer Wert, da müsste man ein Epsilon definieren, sprich einen Bereich, innerhalb dem man annimmt, dass die Werte tatsächlich gleich sind.

Jou.  Wird einem hier mal wieder vor Augen geführt.
Bleibt als Lösung am Ende einer Berechnung das Endergebnis zu  runden (und nicht auch die Teilergebnisse wie Du oben auch berschrieben hast) und zwar auf die Genauigkeit mit der man arbeiten will.

Ich setz den Thread mal auf erledigt.

Thx an alle Schreiber hier im Thread.

Bye, Holcomb



Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Rechengenauigkeit INTEL ???
« Antwort #15 am: 06.07.04 - 18:37:32 »
Genau, so ist es.
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

Marinero Atlántico

  • Gast
Re:Rechengenauigkeit INTEL ???
« Antwort #16 am: 06.07.04 - 19:21:47 »
auch Net schafft es nicht (habs auch nicht anders erwartet, will nur ein bischen mit meinen extrem tiefsinnigen Kenntnissen in MS.NET Konsolenanwendungen angeben.  ;D
Obwohl Microsoft da hunderte von Milliarden von Dollar investiert hat.
Code
double zahl1 = 184.8;
double zahl2 = -184.5;

System.Console.WriteLine(zahl1 + zahl2);

« Letzte Änderung: 06.07.04 - 19:23:53 von Marinero Atlántico »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz