Java Nach float-Division die letzten noch wichtigen Nachkommastellen bestimmen und bis dorthin kürzen ...

Könnte man es denn so ändern, dass auch die periodische Nachkommastellen-Darstellung noch zu erkennen wäre? Zum Beispiel bei 1/3 mindestens ...333 (also dreimal)?
 
Wenn man verstünde, warum du die Zahlen in irgendwelche Gruppen einkategorisieren willst, dann könnte man auch vernünftig und lösungsorientiert antworten.

Ich meine das ganze kannst du auch mit Excel oder LibreOffice machen... Und warum überhaupt bis 300? Wenn du eh nur ab der Zweiten Nachkommastelle schaust, dann kommt von 0 bis 150 und von 151 bis 300 fast das gleiche (also doppelte) raus mit einer Ausnahme.

Geht es darum, die Ungenauigkeit von float zu zeigen?

Weil das willst du ja "ermitteln":
1717424320754.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Raijin und BeBur
@tollertyp Ja, das stimmt, da passt was nicht richtig zusammen.

Ich bin mir selber noch nicht ganz sicher, was ich will. 🫢

tollertyp schrieb:
Weil das willst du ja "ermitteln":
Fast. Die 0 könnte aus der Betrachtung genommen werden, und es müsste nicht unbedingt die letzte Stelle aufgerundet werden.
 
Ne, keine Bruchklasse, schon die Dezimaldarstellung, jedoch leicht abgewandelt.
 
Glaub wir haben uns Missverstanden:

„Darstellung“ is ja immer beliebig generierbar und konfigurierbar. Aber die eigtl Repräsentation von Informationen in geeigneten Datentypen - also die Datenbasis - willst du evtl schon mit höherer Genauigkeit als genau klassische 32/64bit float nach dem, was du so geschrieben hast?
 
As I said, die interne Repräsentation ist mir eigentlich relativ egal, was zählt ist das Ergebnis: die spezielle Dezimaldarstellung.

Btw., wie lässt sich noch einmal feststellen, ob eine Bruchzahl eine endliche Dezimaldarstellung hat, also quasi wirklich nicht reell ist?
Ergänzung ()

Pardon, ich meinte, nicht ausschließlich zu den reellen Zahlen gehört.
 
Wenn du „nur“ über die Darstellung gehst hast du das Problem, dass zB die Zahl der aussagekräftigen Stellen im 10er System nicht für alle Zahlen identisch ist, weil floats/doubles Zahlen ja binär repräsentieren.

So einfach ist das nich:
Nur weil ne Zahl wie 1/3 mit „periode“ unendlich viele Stellen hintern Komma hat ist sie noch nicht „Transzendent“
https://de.m.wikipedia.org/wiki/Transzendente_Zahl
Bin nich sicher ob ich deine Frage verstehe aber deswegen komme ich immer mit Brüchen:
Zahlen wie 0,33333…, die eben nicht Transzendent sind, lassen sich exakt mit einem Bruch darstellen (int / int). Zahlen wie pi, e, … sind eben nicht Q sondern nur in R.

Ich glaube nicht, dass es nen einfachen Algo gibt, der testet, ob eine Zahl transzendent ist. Wie auch: „sqrt (2)“, „pi“, oder ne unendliche Summe sind ja kein sinnvoller Parameter einer normalen Funktion, die sonst float, int usw akzeptiert.
Transzendente Zahlen werden ja eher durch eine Berechnungsvorschrift benannt oder tragen berühmte Namen wie pi. Aber in Ziffern Stelle für Stelle hinschreiben geht ja nicht in endlicher Zeit und mit endlichem Speicher.

Und woher soll man wissen, dass nach zB 1mio Stellen nicht doch irgendwo eine Periode lauert.
Ergänzung ()

Ich geb nochmal ne andere pragmatische Antwort:
Natürlich ist jede Zahl, die dein Computer mit seinem endlichen Speicher in endlicher Zeit darstellen oder verarbeiten kann rational (in Q)
 
  • Gefällt mir
Reaktionen: CyborgBeta
Danke. Ja, es geht mir wohl um die (minimale) periodische Darstellung aller Zahlen, die in Q und in R sind, also nicht transzendent sind ... Bisschen schwer zu erklären, aber ich habe das Vorhaben erstmal auf Eis gelegt, hat keine Dringlichkeit.
 

Ähnliche Themen

Zurück
Oben