[erledigt] signifikante Stellen und Rundungsverhalten

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

drbrode
**
Beiträge: 40
Registriert: Di, 29.11.2016 14:10

Re: [HILFE] signifikante Stellen und Rundungsverhalten

Beitrag von drbrode »

Stimmt, aber wohl weil Du viel zu viel reininterpretierst
Was soll ich denn da reininterpretieren? Durch meine Frage wollte ich schlichtweg ergründen ob hinter der von mir beobachteten Feststellung irgendeine Art von reproduzierbarer Logik steht. In diesem Fall hätte man das in seinen Formeln ja vielleicht irgendwie berücksichtigen können. Wenn dem nicht so ist, in Ordnung. Dann muss ich damit leben und mir einen anderen Weg suchen. Nur bis dato wusste ich das ja nicht.

Trotzdem denke ich, wenn man als Programmierer eine (willkürliche) Anzahl signifikanter Stellen festlegt, sollte man doch dafür sorgen, dass sich das Programm im Rahmen dieser Willkür richtig verhält.

(Ich habe das Ganze übrigens eben nochmal in MS Office 2010 ausprobiert. Auch hier stell ich Rundungsfehler fest. Allerdings andere als bei calc. Verrückt... ;-))
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [HILFE] signifikante Stellen und Rundungsverhalten

Beitrag von Stephan »

Was soll ich denn da reininterpretieren?
Das hatte ich doch geschrieben. Verkürzt gesagt: Du erwartest irgendeinen tieferen Grund warum das Programm ungenau rundet. Meines Erachten gibt es diesen Grund aber garnicht, sondern die Programmierer waren nur zu faul entsprechende Anstrengungen zu unternehmen das das Programm das tut.
Trotzdem denke ich, wenn man als Programmierer eine (willkürliche) Anzahl signifikanter Stellen festlegt, sollte man doch dafür sorgen, dass sich das Programm im Rahmen dieser Willkür richtig verhält.
und das tut es, was ich nun zum dritten Male sage. Das Programm ist nur nicht in der Lage mit mehr als 15 signifikanten Stellen zu rechnen AUCH NICHT eine Rundung genau zu berechnen.

Bezüglich Deines Rechenbeispiels ist nun einmal 42840,0069444444 die größtmögliche Zahl mit der noch richtig gerechnet wird, hingegen ist Calc nicht in der Lage eine Zahl mit 16 signifikanten Stellen (z.B. 42840,00694444444) noch richtig zu runden, weil die Zahl 15 signifikante Stellen überschreitet.

Ich habe das Ganze übrigens eben nochmal in MS Office 2010 ausprobiert. Auch hier stell ich Rundungsfehler fest. Allerdings andere als bei calc.
stimmt, so ist es


Gruß
Stephan
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: [HILFE] signifikante Stellen und Rundungsverhalten

Beitrag von balu »

Hallo.
Stephan hat geschrieben: Gut so?
Ja doch ;-)


Stephan hat geschrieben: Nö, "Ra" sagt mir spontan nichts (außer ein Papyrusboot von Heyerdahl hieß "Ra" :lol: )
Na hö' ma'! Du kennst den alten altägyptischen Sonnengott nicht? :lol:


Stephan hat geschrieben: Auch wollte ich Dich wirklich nicht belehren.
Hast Du doch auch nicht. Ist alles in Ornung.
Aber das Du ein kleiner "Hobby-Zerspaner" warst, ist mir neu. Dafür hast Du meinen Bild


Genug gelacht, und amüsiert. Back to Thema.

drbrode hat geschrieben: Trotzdem denke ich, wenn man als Programmierer eine (willkürliche) Anzahl signifikanter Stellen festlegt, sollte man doch dafür sorgen, dass sich das Programm im Rahmen dieser Willkür richtig verhält.
Ich verstehe dich wohl, aber es gibt Dinge die sich wahrlich nur sehr langsam ändern. Ich versuche das ganze mal mit meinen eigenen Worten zu erklären.

Als erstes schmeiß ich jetzt mal ein Blödes wort in den Raum.

Abwärtskompatibilität

Und nun noch eine Beschreibung.

Ohne mathematischen Co-Prozessor.


Und nun ergibt sich folgendes Bild.
Zu Zeiten wo es die CPU noch ohne den mathematischen Co-Prozessor gab, musste alles die CPU erledigen. Egal ob die Grafikausgabe geregelt werden musste, oder ob mathematische Rechenoperationen durchgeführt wurden, alles machte die CPU ohne zusätzliche Unterstützung. Und die paar MHz die die CPU damals schaffte, z.B. 33 MHz, ging sehr schnell in die Knie, wenn mathematische Komplexe Berechnungen durchgeführt wurden. Da zählte also so wenig Rechenleistung wie nur möglich der CPU abzuverlangen. Und dementsprechend wurde die Software so prgrammiert, das es zu keiner starken CPU-Auslastung kam.

Irgendwann wurden die PCs bedeutend schneller weil sie unter anderem Serienmäßig mit einem mathematischem Co-Prozessor ausgerüstet wurden, aber die Softwareentwickler mussten die Programme Abwärtskompatibel anpassen. Da eine damalige Software schneller umgeschrieben, beziehungsweise neu geschrieben wurde als die Weiterentwicklung der CPU und deren Verkauf von statten ging, wurden halt bestimte Punkte in der Softwareentwicklung sehr lange nicht angerührt. Und ferner kommt noch hinzu, das ein ehemaliger Marktführer in der Softwarebranche von einem anderen überholt wurde. Und der nun neue Marktführer bietet in seinem Programm die Möglichkeit an die Dateien vom alten Marktführer zu öffnen und zu bearbeiten. Dabei musste das aber Kompatibel zu dem alten Programm und deren Dateien seien.

Auch wenn der ehemalige Marktführer nix mehr zu melden hat, so achtet der neue Marktführer darauf das eine Abwärtskompatibilität gegeben ist. Einerseits zu dem anderen Programm, und anderseits, was wichtiger ist, zu seinen eigenen alten Dateien. Und so werden weiterhin bestimmte Punkte einfach nicht angerührt um die Software zu ändern / zu verbessern, weil es so "einfacher" ist die Abwärtskompatibilität zu gewährleisten.

Was dabei schlußendlich heraus kommen kann, das siehst Du ja jetzt selber.

drbrode hat geschrieben: An einer anderen Stelle führe ich jetzt eine Abfrage dieser Tabelle durch und benutze hier für den Befehl "SVERWEIS". Wenn ich in das Abfragefeld nun ein "Datum+10 min" (also z.B. 42840,0069444444) eigebe, findet er den dazugehörigen Eintrag nicht, da in meiner Liste ja der fehlerhaft gerundete Wert 42840,0069444445 steht.

Ich weiß auch, dass ich mir hier im Rahmen einer bestimmten Genauigkeit durch weitere Rundungen weiterhelfen kann.
Ich verstehe nicht warum Du mit solch monströsen Nachkommazahlen arbeitest. Calc kann doch sehr gut mit Datum und Zeit umgehen/rechnen.

Angenomen in D4 steht folgendes "Datum & Zeit" drin.

Code: Alles auswählen

15.04.2017 00:10:00
Alo nix mit Kommazahl.

Und nun gibst Du z.B. in D5 folgende Formel ein.

Code: Alles auswählen

=D4+ZEIT(0;10;0)
D5 wird genau so formatiert wie D4.

Und was bekommst Du wohl in D5 angezeigt?

Richtig!

Das hier!

Code: Alles auswählen

15.04.2017 00:20:00
Es wurden ganz easy 10 minuten zu dem vorherigen Datum dazu addiert.

Meiner Meinung nach machst Du dir das Leben mit den Nachkomazahlen selber nur unnötig schwer. Dabei bleibe ich so lange bis das Du mich vom Gegenteil überzeugt hast.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [HILFE] signifikante Stellen und Rundungsverhalten

Beitrag von Stephan »

Aber das Du ein kleiner "Hobby-Zerspaner" warst, ist mir neu.
Nö, ich war eigentlich nur Modellflieger, bloß in der DDR gabs nicht immer alle Ersatzteile für Modellmotoren zu kaufen und so drehte man sich selbst Kolben und ähnliche Teile.
Es ging um diese Art Motoren:

Bild



Gruß
Stephan
drbrode
**
Beiträge: 40
Registriert: Di, 29.11.2016 14:10

Re: [HILFE] signifikante Stellen und Rundungsverhalten

Beitrag von drbrode »

Ich verstehe nicht warum Du mit solch monströsen Nachkommazahlen arbeitest.
Tu ich ja gar nicht. Ich arbeite in der Praxis schon mit der Datumsdarstellung. Die Kommaschreibweise habe ich nur gewählt, um das Problem zu verdeutlichen. darauf gekommen bin ich ja auch erst nachdem meine oben erwähnte Abfrage nicht funktioniert hat.
Und nun gibst Du z.B. in D5 folgende Formel ein.

Code: Alles auswählen

=D4+ZEIT(0;10;0)
So hatte ich es noch nicht probiert und es scheint wirklich zu funktionieren. Es tauchen bei manchen Werten zwar immer noch die erwähnten Rundungsfehler auf, jedoch scheinen diese nun mit der direkten Zeiteingabe identisch zu sein. Die Abfrage funktionert jedenfalls nun.

Damit hast du mein praktisches Problem anscheinend gelöst. Danke dafür!

Prinzipiell finde ich das Rundungsverhalten von calc aber immer noch ungenügend. Aber diese Diskussion ist nun eher pedantischer Natur.

Ich danke allen für die Hilfe und die Bereitschaft zur Diskussion! Hat Spaß gemacht ;-)
Antworten