gleitkommazahl < 4 byte?
-
tach zusammen,
wollt mal fragen ob eine Bibliothek bekannt ist bzw obs überhaupt möglich ist eine Gleitkommazahl kleiner 4 Bytes darstellen zu können? Ich bräuchte "nur" incl. Punkt und Nachkommastellen nicht mehr als eine 5 stellige Genauigkeit, sprich 000.00 bis ca. 650.00 oder auch 00.000-65.000.Gruss
Chris
-
chris19 schrieb:
Ich bräuchte "nur" incl. Punkt und Nachkommastellen nicht mehr als eine 5 stellige Genauigkeit, sprich 000.00 bis ca. 650.00 oder auch 00.000-65.000.
Als Gleitkommazahl ist Rechnerspezifisch ich glaube 4 Byte in der Regel das kleinste. Aber vielleicht brauchst du ja garkeine Gleitkommazahl sondern interpretierst eine Ganzzahl einfach anders... Nur sehe ich bei deiner Anforderung das Problem das du flexible Nachkommastellen haben willst (im Beispiel 2 oder 3); ohne die immer anders interpretieren zu müssen, brauchst du dann denoch mehr als 2 Byte.
cu André
-
float ist das kleinste, was sinnvoll von C++ verwendet werden kann - aber wenn du unbedingt willst, kannst du kleinere Typen von Hand nachbauen (Stichwort "Minifloat").
-
hi, danke für die Infos! Werd dann wohl versuchen erstmal Ganzzahlen anders zu interpretieren, mit Minifloats ist allerdings auch ziemlich interessant.
Gibts eigentlich irgendwo eine Liste wo "teure" mit weniger "teuren" Operationen unterschiedlichen Datentypens verglichen werden?
Im Internet oder in meinen Büchern kann ich dazu eher weniger finden, daß bspw Modulo relativ teuer ist.
Interessant wäre z.b.ein Vergleich um die Kosten der Arithmetik von Fliesspunktzahlen vs Ganzzahlen, oder was kostet casten, z.b. int zu float.
ist es teurer, eine Fliesspunktzahl in einer if Abfrage nach 5.0f zu fragen oder eine Integer Variable nach 5?
Ist wahrscheinlich wie immer compiler und systemabhängig, aber eventuell gibts ja so eine Liste mit Durchschnittswerten ohne Garantie?
Wenn es denn letztendlich an den ASsembler Befehlen liegt, wo liegen da die Unterschiede?
Ich bastel gerad Pathfinding für eine hexagonale Spielewelt mit einigen hunderttausend Feldern, daher mein grosses Interesse an der Effizienz.gruss
Chris
-
Worin sollte der Sinn von kleineren Gleitkommazahlen liegen? Wenn du dir Gleitkommazahlen mit Sprachmitteln "nachbaust", wirst du auf die Unterstützung der Hardware-Gleitkommaeinheit des Prozessors verzichten müssen, d.h. dein Programm wird um ein Vielfaches (!) langsamer werden, was gerade für deine Aufgabe tödlich wäre. Falls du das trotzdem umsetzen möchtest, schau dir lieber mal "fixed point arithmetics" an, die sind weitaus schneller zu berechnen...
Grüße,
Martin
-
Bei den "Durschschnittswerten ohne Garantie" ist Integer schneller als float bei gleichen Operationen.
Und auf "5.0f" zu prüfen (mit ==) ist sowieso Hardcore, sowas sollte man nicht tun. Zumindest nicht wenn man irgendwo mit den Floats auch rechnet.
-
JimmydaMage schrieb:
Worin sollte der Sinn von kleineren Gleitkommazahlen liegen? Wenn du dir Gleitkommazahlen mit Sprachmitteln "nachbaust", wirst du auf die Unterstützung der Hardware-Gleitkommaeinheit des Prozessors verzichten müssen, d.h. dein Programm wird um ein Vielfaches (!) langsamer werden, was gerade für deine Aufgabe tödlich wäre. Falls du das trotzdem umsetzen möchtest, schau dir lieber mal "fixed point arithmetics" an, die sind weitaus schneller zu berechnen...
Grüße,
Martin
Auch mein Rat: Schau einfach mal, ob du dein Problem evtl. mit Fixkommazahlen gelöst kriegst, denn Gleitkommazahlen nachzubauen ist ein Performancekiller.