🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Warum kann LibreOffice nicht 1,001 -1 ausrechnen?

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Volker_D
Beiträge: 47
Registriert: Sa 3. Jun 2023, 16:46

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechenen?

Beitrag von Volker_D » Sa 3. Jun 2023, 23:40

:lol:
Ich habe auch ein paar mal wieder editiert.

Zumindest sind wir der Lösung jetzt schon näher gekommen.
100% klar ist mir noch nicht, wie das Problem zustande kommt, aber fast.

LibreOffice steht mit diesem "Problem" nicht alleine da. Google macht den gleichen Fehler. Excel habe ich nicht hier. Teste ich mal Montag auf der Arbeit.
Dann mache ich evtl. mal ein neues Video. Das "alte" hatte ich eben gelöscht, da mir so ein paar Dinge klar geworden sind.

Danke für die Hilfe. Ich melde mich Montag oder Dienstag mal wieder.

Schönen Abend noch
Volker

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechenen?

Beitrag von gogo » So 4. Jun 2023, 00:41

Der "Fehler" ist eigentlich ein Übersetzungsfehler. Und zwar eine nur annäherungsweise Übersetzung der Zahl, an die Dein Hirn denkt in das, was Dein Computer darstellt und speichert.
Siehe dazu: https://www.uibk.ac.at/mechatronik/mikr ... 54.html.de gleich der erste Satz:
...Bei der Darstellung besonders großer Werte und Zahlen nahe 0 stoßen Festkommaformate schnell an ihre Grenzen. ...
.
Technisch entsteht bei diesen "Umwandlungen" aus Gründen der binären Speicherung von Zahlen, die als Bruch dargestellt werden müssen, während der Division ein Unterlauf. Das Problem wird in einer internationalen Norm (IEE 754) geregelt. (https://de.wikipedia.org/wiki/IEEE_754#IEEE_754-2008 bzw. https://de.wikipedia.org/wiki/Arithmetischer_Unterlauf)
Jegliche Software ist von diesem Problem betroffen, und jede hält sich mehr oder weniger an die 754er ... eben nach Bedarf.
Ich persönlich würde es cool finden, wenn es einen Modus gäbe, bei dem Calc die betroffenen Zellen irgendwie farblich markiert. (Kann man vermutlich makroprogrammieren - ich brauch's aber nicht ;) )

Wenn Du maximale Genauigkeit brauchst, dann musst Du das Problem verstehen, ansonsten ist es ausreichend, an den richtigen Stellen mit der ausreichenden Genauigkeit zu runden.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Volker_D
Beiträge: 47
Registriert: Sa 3. Jun 2023, 16:46

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechenen?

Beitrag von Volker_D » So 4. Jun 2023, 08:53

hmmm. Ich sage mail wieder provokativ: "nein". Das ist weder das Problem noch die Lösung.

Bei deiner Lösung währen fast alle Kommazahlen farblich markiert.

Die Ungenauigkeit ist uns hier schon seit Themenerstellung klar.

LibreOffice weiß doch, dass es nur 15 Stellen genau rechnen kann. Es rechnet intern mit mehr Stellen (was auch korrekt und richtig ist, weil Rechnungen so genauer sind.) Es macht aber den Fehler und zeigt in der einfachen Ansicht dem Benutzer erstmal nur den gerundeten Wert an, benutzt aber zum Prüfen auf Gleichheit den ungerundeten Wert. Wenn man genauer hinguckt, dann sind einige Zahlen gerundet, aber andere Zahlen werden nicht gerundet. Das ist inkonsitent. Entweder rundet man oder man rundet nicht. Es mal so und das andere mal anders zu machen ist inkonsequent und nicht nachvollziebar.

Und was heißt hier "wenn du maximale Genauigkeit brauchst"?: Nochmal: Es geht hier um 4 Stellen Genauigkeit! 4 Stellen! Ein Schüler kann mit LibreOffice noch nicht einmal 1,001m - 1m = 1 mm rechnen?! Das hat erstmal wenig mit "maximale Genauigkeit" zu tun, sondern NUR mit 4 Stellen! Das ist eine Aufgabe aus dem 5. Schuljahr, die dem Schüler hier falsch berechnet wird. Dem kann ich dann doch wohl schlecht sagen: "Also wenn es auf maximale Genauigkeit ankommt, dann musst du das aber anders machen."

(Nicht so wichtiger Nachtrag: Jegliche Software ist übrigens nicht davon betroffen. Man kann Kommazahlen auch anders darstellen. Man kann die Dezimalzahl 0,1 auch Binär so darstellen, dass es nicht eine unendliche Binärzahl ist. (Nämlich die Dezimalzahl 1; die ist ja endlich. Und dann das Komma um eine Stelle verschieben. Das ist auch endlich. Also zwei Ganzzahlen. Bei der Darstellung braucht man allerdings mehr Speicherplatz, wenn man gleiche Genauigkeit und gleichen Wertebereich wie bei IEEE 754 haben möchte. Daher wird es so i.d.R. nicht gemacht.)
Auch viele Bruchenrechenprogramme gehen anders und ohne das Problem vor. Sie speichern sich Ganzzahlen für Zähler und Nenner ab statt eine Gleitkommazahlen zu benutzen.)

Volker_D
Beiträge: 47
Registriert: Sa 3. Jun 2023, 16:46

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechenen?

Beitrag von Volker_D » So 4. Jun 2023, 10:10

(sorry. Doppelt gepostet)
Zuletzt geändert von Volker_D am So 4. Jun 2023, 11:05, insgesamt 1-mal geändert.

Volker_D
Beiträge: 47
Registriert: Sa 3. Jun 2023, 16:46

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechenen?

Beitrag von Volker_D » So 4. Jun 2023, 10:18

Nachtrag 2: Und Python habe ich auch mal ausprobiert.

Dort ist schon 1,1-1 falsch (oder richtig, je nachdem wie man es sieht.)

Python: 1,1-1 = 0.10000000000000009
C++ 1,1-1 = 0.1
LibreOffice 1,1-1= 0.1

Python und c++ kann ich noch nachvollziehen. Python rundet nie. Der C++ Compiler rundet bis zur 13. Stelle. (Müsste eigentlich bis zur 14. Runden, da 15 Stellen Genauigkeit durch den Datentyp vorgegeben wird.)
LibreOfiice ist komisch. Rundet bis zur 3 Stelle. Warum zum Henker bis zur 3. Stelle? Es hat doch 15 Stellen Genauigkeit.
Zuletzt geändert von Volker_D am So 4. Jun 2023, 11:53, insgesamt 1-mal geändert.

Pit Zyclade
* LO-Experte *
Beiträge: 3041
Registriert: Mo 12. Nov 2012, 16:59

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechenen?

Beitrag von Pit Zyclade » So 4. Jun 2023, 10:32

Volker_D hat geschrieben:
Sa 3. Jun 2023, 20:21
Ist doch in deinem Dokument auch falsch!
Geh mal in deinem Dokument oben im Kopf mit der Maus zwischen "C" und "D", sodass der Dopplepfeil erscheint. Dann die linke Maustaste drücken und nach rechts ziehen, sodass das Feld breiter wird. Bitte etwa 3 mal so groß ziehen (oder mehr). Dann steht dort als Lösung 0,00099999999998....
Es ist ja nie falsch, den Dingen auf den Grund gehen zu wollen. Andererseits ist die Anzeige, bevor ich die Spaltenbreite übergroß mache ohne aufgefordert zu sein, doch richtig (zumindest bei meiner LP-Version, ich schränke meine Aussage vorsichtig ein).

Warum also wird hier ein "bug" hochgespielt, aber in den täglichen Dingen selbst wird nicht exakt vorgegangen?
Seit Beginn der Diskussion hast du noch immer nicht den orthographischen Fehler im Betreff ausgebessert... (Das kannst nur du als Erstautor, wenn du den ersten Beitrag editierst)
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechenen?

Beitrag von karolus » So 4. Jun 2023, 10:50

Ja Phython ist falsch, und du redest dummes Zeug!
Normalerweise rechnet python auch mit 64bit-Gleitkommazahlen, oder wenn möglich mit ganzen Zahlen mit im Prinzip unbegrenzter Genauigkeit ( irgendwann ist jeder Speicher voll )

Darüberhinaus hat python ein »decimal«modul, ein »fractions«modul und das thirdparty_modul »numpy« kennt ggf auch 128bit-Gleitkommazahlen.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Volker_D
Beiträge: 47
Registriert: Sa 3. Jun 2023, 16:46

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechnen?

Beitrag von Volker_D » So 4. Jun 2023, 10:53

oh... Sorry. Verbessert. Ich habe hier immer die Englische Rechtschreibprüfung an, weil ich meistens auf Englisch an diesem Rechner schreibe. Bei mir ist fast alle rot unterstrichen. Bin zu faul das umzustellen.

Was mich stört ist:
a) ... die Anzeigen und Überprüfungen stimmen nicht überein.
b) ... Die Aufgabe 1,1-1 und 1,01 -1 wird anders behandelt als die Aufgabe 1,001 - 1. Dem Anwender wird nicht klar warum. An der Genauigkeit kann es ja normalerweise nicht liegen. Die liegt ja bei 15 Stellen! Warum wird bei 4 Stellen plötzlich unterschieden. Bitte entweder IMMER genau in der Anzeige ODER IMMER gerundet. Aber warum bei 4 Stellen plötlzich anders?!
c) Mir ist dieser Fehler aufgefallen, weil ich seit Jahren einen Rechentrainer mit und für Schüler benutze/schreibe. Als Einführung in LibreOffice. Hat damals immer funktioniert. Jetzt nicht mehr. LibreOffice denkt sich Zahlen aus, die der Schüler subtrahieren soll. Der Schüler gibt seine Lösung ein. LibreOffice antwortet, ob die Rechnung richtig ist oder nicht und sagt notfalls, wie die richtige Antwort lauten müsste. Und jetzt passiert dann soetwas wie "Was ist 1,001 - 1 ?". Schülerantwort "0,001". Antwort von Libreoffice "Das ist falsch. Die richtige Lösung lautet 0,001". Wer soll das den verstehen? Er müsste entweder sagen "Richtig" oder "Falsch. Die richtige Antwort lautet 0,0099999..." sagen.
Man stelle sich jetzt mal vor welche Auswirkungen soetwas z.B. an einer Tankstelle haben könnte, wo die Spritpreise auch 3 Nachkommastellen haben. ...
Zuletzt geändert von Volker_D am So 4. Jun 2023, 11:08, insgesamt 2-mal geändert.

Volker_D
Beiträge: 47
Registriert: Sa 3. Jun 2023, 16:46

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechenen?

Beitrag von Volker_D » So 4. Jun 2023, 11:00

karolus hat geschrieben:
So 4. Jun 2023, 10:50
und du redest dummes Zeug!

Normalerweise rechnet python auch mit 64bit-Gleitkommazahlen, oder wenn möglich mit ganzen Zahlen mit im Prinzip unbegrenzter Genauigkeit ( irgendwann ist jeder Speicher voll )

Darüberhinaus hat python ein »decimal«modul, ein »fractions«modul und das thirdparty_modul »numpy« kennt ggf auch 128bit-Gleitkommazahlen.
a) Warum dummes Zeug?

b) Mir ist klar dass es verschiedene Datentypen gibt. Aber das hat doch nichts mit der Beobachtung zu tun, dass Python erstmal an dieser Stelle etwas anders hinschreibt. Und ich habe auch geschrieben, dass das ja auch durchaus RICHTIG ist. Weil man, zumindest ich, versteht, warum das Ergenis dort so lautet.

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Warum kann LibreOffice nicht 1,001 -1 ausrechnen?

Beitrag von gogo » So 4. Jun 2023, 11:52

Volker_D hat geschrieben:
So 4. Jun 2023, 10:53
b) ... Die Aufgabe 1,1-1 und 1,01 -1 wird anders behandelt als die Aufgabe 1,001 - 1. Dem Anwender wird nicht klar warum. An der Genauigkeit kann es ja normalerweise nicht liegen. Die liegt ja bei 15 Stellen! Warum wird bei 4 Stellen plötzlich unterschieden. Bitte entweder IMMER genau in der Anzeige ODER IMMER gerundet. Aber warum bei 4 Stellen plötlzich anders?!...

Code: Alles auswählen

1000,001 - 1000 = 0,000999999999976353
   1,001 -    1 = 0,00099999999999989
es ist ein Unterlauf, der bei der Abbildung von allen nicht rein binär darstellbaren Zahlen passiert. Immer und überall in allen uns bekannten Universen. Das Ergebnis ist 0.001, aber es wird zweimal unterschiedlich im Speicher abgebildet. Das passiert auch bei der Abbildung von 1.5 (^= 3/2 also "00000011" / "00000010"), falls die Genauigkeit nicht ausreicht. Tippe mal 1,5 ein und verringere die Spaltenbreite - du wirst nur mehr eine "2" sehen - alles ganz "ohne Berechnung".
gogo555 hat geschrieben:Wenn Du maximale Genauigkeit brauchst, dann musst Du das Problem verstehen, ansonsten ist es ausreichend, an den richtigen Stellen mit der ausreichenden Genauigkeit zu runden.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten