Fließkommaverarbeitung

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Stephan-X
Beiträge: 78
Registriert: 30.07.2008 16:02
Computerausstattung: PC 8 GB RAM NVIDIA Grafik 1 TB RAID // Ubuntu Mate 64 Bit // Pure 6.0 64
Wohnort: Oberösterreich

Fließkommaverarbeitung

Beitrag von Stephan-X »

Hallo Leute, beim Spaltensummieren mit großen Zahlen kam mir da was komisch vor. Da hab ich einfach mal Zahlen in eine Fließkommavariable gesetzt und anzeigen lassen. Hier mal der Code zum Probiern, schaut mal auf die DEBUG Ausgabe.

Code: Alles auswählen

a.f = 245456.45
Debug StrF(a,2)
a.f = 2245456.45
Debug StrF(a,2)
a.f = 44245456.45
Debug StrF(a,2)
a.f = 442450456.45
Debug StrF(a,2)
Das kommt bei mir raus:
Debug1 245456.45
Debug2 2245456.50
Debug3 44245456.00
Debug4 442450464.00

Wo hab ich da einen Denkfehler ?? Sollte ich Double nehmen ??
Mein Rechner PC 4 GB RAM, X-Ubuntu 15.04 32 Bit, Pure 5.42 (LTS)
Wenn Sie nichts zu Tun haben, tun Sie es bitte nicht hier.
Benutzeravatar
mk-soft
Beiträge: 3701
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Fließkommaverarbeitung

Beitrag von mk-soft »

Floats und Doubles sind strukturieren Zahlen und können nur eine begrenzte Genauigkeit den Wert ablegen.

Link https://de.wikipedia.org/wiki/Gleitkommazahl
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Fließkommaverarbeitung

Beitrag von GPI »

das zweite größere Problem ist, das die float/doubles die Basis 2 haben und nicht 10.
Also wo bei uns 10^1,10^0,10^-1,10^-2 (10, 1, 0.1, 0.01) den Wert der Stellen angibt, sind es bei float/double 2^1, 2^0, 2^-1, 2^-2 (2, 1, 0.5, 0.25).
Versuch da mal den Wert 0.4 nachzubilden - es wird dir nicht gelingen! Das ist aber kein Fehler in System, der Bruch 1/3 lässt sich auch nicht in 10er Zahlensystem darstellen.

Wenn man also exakte Ergebnisse braucht, sind Floats/Doubles völlig ungeeignet. Geldbeträge bspw. sollte man lieber in der kleinesten Einheit umrechnen und speichern.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
mk-soft
Beiträge: 3701
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Fließkommaverarbeitung

Beitrag von mk-soft »

Bei Berechnungen von Geldbeträge Zinsen oder Währungsumrechnungen sind aber mehre nach Komma stellen zu beachten.
Da sollte man sich vorher erkundigen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Stephan-X
Beiträge: 78
Registriert: 30.07.2008 16:02
Computerausstattung: PC 8 GB RAM NVIDIA Grafik 1 TB RAID // Ubuntu Mate 64 Bit // Pure 6.0 64
Wohnort: Oberösterreich

Re: Fließkommaverarbeitung

Beitrag von Stephan-X »

OK .. Danke erst mal :wink: Es geht hier nur um Baumassen und Kalkulation, aber auch die Milionensummen sollten stimmen ! :mrgreen:
Na dann werd ich da mal wege suchen das hinzukriegen.
Wenn Sie nichts zu Tun haben, tun Sie es bitte nicht hier.
Antworten