Hallo bit4bit,
ich habe Deinen Beitrag erst jetzt irgendwie gelesen, Du hast Dir viele Gedanken darum gemacht.
Zitat:
Man kann jetzt in Abhängigkeit der Größe einer Zahl entscheiden ob auf 2, 4 oder 6 Nachkomma-stellen aufgerundet werden muss. Dafür sind nur wenige Vergleiche notwendig
so ähnlich gehe ich ja bei codieren meiner Zahlen vor. Du darfst das Problem des Rundens nicht vermischen mit dem Problem der Speicherung der Zahlen.
Wenn Du Dir den folgenden Beitrag anschaust:
http://www.delphipraxis.net/internal...077&highlight=
die Zahlen werden in 32 Bit in "meinem" speziellen Format abgespeichert ( in einem Integer) , bieten aber dennoch mehr Anzahl signifikanter Stellen, als ein Single Wert, weil ich für die Kodierung des "Exponenten" nicht 8 Bit wie bei einem Single Wert, sondern nur 2 Bit verwende.
0XX0 0000 0000 0000 0000 0000 0000 0011
in XX ( Bit 29 und Bit 30) werden die Nachkommstellen codiert. 4 Zustände sind mit 2 Bits möglich. ich benutze entweder 2, 4 oder 6 Nachkommastellen. Eine Zahl wie 0,5 * 10^-12 abzuspeichern ist dann natürlich nicht möglich, aber eben auch nicht nötig für meine Zwecke !
Zitat:
Übrigens, die Benutzung von 64 Bit Integer Variablen dürfte für Deine Zwecke wohl das Beste darstellen.
ja eben nicht, da ich Platz sparen muss und ich deswegen die Zahlen auf 32 Bit "komprimiert" habe.
Was natürlich richtig ist, (weiß nicht, ob Du das gemeint hast) .. man könnte die minimale Preisdifferenz, wenn man sie erhält, zum Beispiel 0,249999999 selbst versuchen erstmal auf 0,25 zu runden (Anhand der Größe an sich dieser Zahl). Um dann damit wieder den eigentlichen Preis zu runden.
Für alle Fälle wo ich aber wiederum nur die Zahl an sich kenne ( nicht die 0,25 ) macht sich das Verfahren sehr gut.
warum machst Du das runden so kompliziert und addierst erst noch 9/10 ?
round(wert / 0.25) * 0.25 bringt die mir gewünschten Ergebnisse.
Gruß stoxx
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.