🙏 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, 19:08

Das hat absolut nichts mit "echauffieren" zu tun! Es geht darum Grenzen zu kennen und zu sehen, dass dadurch schon einfache Rechnungen wie 1,001-1 falsch werden können! Ich möchte diese Grenzen nur verstehen und nicht einfach nach dem Motte "wird mich wohl nicht treffen".

Mir ist klar, dass man oft keine 14 Nachkommastellen braucht. Aber um es noch mal klar zu sagen. Bei meiner Aufgabe geht es nicht um 14 Nachkommastellen! Sie hat exakt 3 Nachkommastellen (4 signifikante Stellen). 1,001 - 1.
Ich bin weit von 14 entfernt.

Sin() und Cos() rechen viele Rechner übrigens mit viel weniger Stellen genau. Die zeigen zwar gerne 14 oder mehr Stellen an, aber es stimmen oft nur die ersten 6 Nachkommastellen. (Was daran liegt, dass die Reihenbildung aus Geschwindigkeitsgründen "zu früh" abgebrochen wird.)

Wenn keine Datentypkonvertierungen stattfinden, warum wird dann 1,1-1 richtig gerechnet, aber 1,001-1 wird falsch ausgerechnet? (Oder evtl. nur gerundet dargestellt? Aber warum findet das Runden bei 0,01 statt, aber nicht bei 0,001) Kann man sich in LibreOffice die Gleitkommazahl im "raw" Format anzeigen lassen? Vielleicht wird es mir dann klarer.

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 » Sa 3. Jun 2023, 19:50

Was wird denn hier gequatscht!
Natürlich kann LO diese einfache Subtraktion korrekt darstellen. Man muß nur wissen was man wo und wie will!
Subtraktion mit calc.ods
(7.77 KiB) 67-mal heruntergeladen
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

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, 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....

Ok. Ich habe verstanden warum das so ist. Es ist von LibreOffice unsinning so viele Nachkommastellen anzuzeigen. Vermutlich benutzen die etwas ähnliches wie IEEE 754 binary64 (Wobei man damit auf 15 Nachkommastellen kommen müsste und ich nur auf 14 gekommen bin.)

Trotzdem verstehe ich noch nicht, warum 1,01 - 1 korrekt berechnet wird. Das müsste doch auch 0,009999999... sein. Warum wird da gerundet?

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

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

Beitrag von musikai » Sa 3. Jun 2023, 21:51

ich schätz, es ist ein bug.

Ohne die Größe der Zelle verändern zu müssen, kann man den Wert auch unten in der Statusleiste sehen.
In LibreOffice 4-6 steht dort stets: 0,001
LO4-6.PNG
LO4-6.PNG (1.87 KiB) 1342 mal betrachtet

Nur in LO 7.4.6.2 steht dort: 0,0009999...
LO7.PNG
LO7.PNG (1.27 KiB) 1342 mal betrachtet

Musst mal schauen, ob der Bug schon gemeldet wurde.
https://bugs.documentfoundation.org/

Es hat sich wohl die voreingestellte interne Anzahl der Kommastellen geändert, die gerundet werden.
In LO4 kann ich problemlos von 1.000000001 subtrahieren.
In LO5-6 nur 3 Kommastellen: 1,001
In LO7 nur 2 Kommastellen: 1.01

Abhilfe schafft, wenn man in den Einstellungen bei Calc unter "Berechnen" die Zahl der gewünschten Nachkommastellen angibt.
Zuletzt geändert von musikai am Sa 3. Jun 2023, 22:33, insgesamt 1-mal geändert.
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

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, 22:11

hmm... Ich bin mir gar nicht sicher, ob es ein "bug" ist.
Es ist einfach unsinning so viele Stellen anzuzeigen. Wenn/Falls LibreOffice IEEE 754 nutzt, dann ist die Anzeige von mehr als 15 (signifikaten) Stellen unsinnig und sollte nicht ermöglicht werden.

Ich muss noch einmal genau überlegen, wie er da bei der Rechnung an welcher Stelle rundet. Laut IEEE 754 Documentation gibt es drei verschiedne Arten zum Runden von Zahlen.

Und die Zahlen 0,1 sowie 0,01 und 0,001 müsssen ja alle gerundet werden, da sie in den "normalen" Gleitpunktdarstellungen unendlich lang sind. (Es gäbe auch endliche Darstellungsmöglichkeiten, aber dort ist der Wertebereich der Zahlen viel kleiner)

Waren die alten LibreOffice Varianten evtl. "nur" 32 bit? Dann kam dort nämlich keine 8 vor (da es dort nicht so viele Stellen gibt); Alles nur 9en und dann wurde aufgerundet?! Jetzt sind dort mehr Stellen zu sehen, unter anderem die 8 und dann wird scheinbar nicht mehr aufgerundet.

Ich habe das gleiche mal mit der Google Tabellenkalkulation gemacht. Dort kann man sich auch so "unsinnig" viele Stellen anzeigen lassen. Dort lautet das Ergebnis "0,0099...9890000000". Was ja im Grunde noch "blöder" ist, weil dort noch zusätzlich Nullen angehängt werden.

hmm...

Was mich irritiert ist, das ich die Zahl 0,01 ganz normal abspeichern kann und mir dort alle Nachkommestellen richtig angezeigt werden (Obwohl das ja eigentlich auch nicht möglich sein dürfte). Berechne ich die Zahl 0,01, dann sind die Nachkommastellen "falsch"....

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

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

Beitrag von musikai » Sa 3. Jun 2023, 22:36

Ah, du hast schon geantwortet, während ich oben nochmal editiert habe.
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

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, 22:57

hmmm... Ja.
Ich denke der (oder zumindest ein ähnlicher) Fehler ist wird auch auf der "Bug Report Seite" besprochen. (Dort ist das Problem, dass 0,3-0,2-0,1 nicht 0 ist. Wobei ich den Fehler bei mir nicht reproduzieren kann.)
https://bugs.documentfoundation.org/sho ... ?id=130202

Eine richtige Lösung haben die aber auch nicht.
Ich glaube die "richtige" Lösung wäre es, nicht so viele Nachkommastellen anzeigen zu können. Dann muss gerundet werden und die Werte "stimmen".

Ist auf jeden Falls ziemlich blöd. Selbst bei einfachen mathematischen Aufgaben wie 1,001m - 1m kann man im Moment nicht prüfen, ob die Lösung gleich 1 mm ist. Eine WENN abfrage anwortet da knall hart "Falsch". :?

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

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

Beitrag von musikai » Sa 3. Jun 2023, 23:00

Volker_D hat geschrieben:
Sa 3. Jun 2023, 22:57
Selbst bei einfachen mathematischen Aufgaben wie 1,001m - 1m kann man im Moment nicht prüfen, ob die Lösung gleich 1 mm ist. Eine WENN abfrage anwortet da knall hart "Falsch"
Auch nicht, wenn Du die Anzahl der Dezimalstellen unter "Extras" Optionen-> Calc-> Berechnen- erhöhst?

edit: Anscheinend nicht.
Aber Abrunden auf 3 Stellen ginge wohl:
=WENN(RUNDEN(C1;3)=0,001)
Zuletzt geändert von musikai am Sa 3. Jun 2023, 23:27, insgesamt 1-mal geändert.
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

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:23

Ah... Sorry. Ich hatte das bei mir auf English und falsch verstanden.
Habe gerade auf Deutsch umgestellt und nach mal geprüft.

Auf Deutsch heißt es "Dezimalstellen für Standardzahlenformat begrenzen".
Diese Option ist Standardmäßig deaktiviert.

Wenn ich es aktiviere und auf 16 oder höher habe, dann geht es nicht.
Ist es auf 15 oder niedrieger, dann geht es.

hmm... Da kommt doch kein normaler Benutzer drauf.
Wenn LibreOffice als Datentyp echt IEEE 754 64bit benutzt, dann ist doch klar, dass die Genauigkeit nur maximal 15 Stellen sein kann. Dann muss/sollte das auch 15 begrenzt sein. Zumindest beim Vergleichen mit WENN. Bei anderen Rechenoperationen sollte es natürlich deaktiviert sein!
Es müsste eine Option geben, um die bei "Wenn" zu begrenzen, aber bei allen anderen Rechenoperatorn wie +, *, ... nicht zu begrenzen.

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

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

Beitrag von musikai » Sa 3. Jun 2023, 23:31

Haha, hatte oben schon wieder editiert, sorry echt :-)

Die Dezimaleinstellung in den Optionen scheint keine Auswirkung auf Funktionen wie WENN zu haben, aber RUNDEN hilft.
=WENN(RUNDEN(C1;3)=0,001)

(oder evtl auf 4 Stellen)
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html


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