Forum: Programmieren allgemein
by Incocnito,
5. Feb 2021
Vielleicht wurde in der Routine auch an dem CPU FloatingPoint ControlWord herumgefummelt.
vgl.
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf
8.1.5 x87 FPU Control Word
Obwohl mir die Auswirkungen jetzt nicht bekannt sind.
Auf dem ersten Blick scheint es nur bei SSE- und SSE2-CPU-Funktionen relevant zu sein....
Forum: Programmieren allgemein
by Incocnito,
4. Feb 2021
Klingt als würde da ein Modul eine globale Einstellung ändern ...
TFormatSettings oder sowas.
Hilft denn mein Tipp nicht, um zuverlässig immer das gleiche Ergebnis zu erhalten?
LG Incocnito
Forum: Programmieren allgemein
by Incocnito,
3. Feb 2021
Ich ermittel je nach Datentyp die kleinste Differenz, welche beim Aufaddieren den Wert der Variable noch ändert.
Zum Verständnis: Wenn du 4 Bits als Nachkommastellen hättest, könntest der Computer ja
1,00 / 1,0625 / 1,1250 / 1,1875 / 1,2500 / 1,3125 / 1,3750 / 1,4375 / 1,5000 / 1,5625 / 1,6250 / ...
abbilden.
Die Genauigkeit welche ich brauche darf dann natürlich nur entsprechend sein. In dem...
Forum: Programmieren allgemein
by Incocnito,
2. Feb 2021
Das Problem hast du mit anderen Zahlen auch bei 2 oder 3 Nachkommastellen.
Ist dir vielleicht nur noch nicht aufgefallen.
Einzig bei 1 Nachkommastelle hättest du das Problem nicht, da es da nur X,5 gibt,
welches in Double (und Float und Extended und whatever) unproblematisch ist.
Du brauchst halt eine generelle Lösung für das Problem und da hilft es dir nur
zu verstehen, warum das...
Forum: Programmieren allgemein
by Incocnito,
29. Jan 2021
Ok, Himitsu war schneller ... ich poste das aber trotzdem jetzt! ;-)
1) Um Gedanklich ungefähr dahin zu kommen zu verstehen, was da passiert:
Man nehme an, für die Nachkommastellen gäbe es im Computer nur 2 Bits.
Durch die Beschaffenheit eines Computers könnte dieser nur auf 1/4-Werte speichern.
Er kann also nur 0.000, 0.250, 0.500 und 0.750 (und 1.000 usw.) speichern.
Jetzt kommst du mit...
Forum: Programmieren allgemein
by Incocnito,
28. Jan 2021
Ja scheint auf den ersten Blick seltsam ...
0.5025 beispielsweise wird bei IEEE-754 (das müsste Single sein)
als
0.502499997615814208984375
gespeichert (dichter kommt der PC mit der Speicherung in 32-Bit nicht ran)
Dort würde ein Runden auf 3 Nachkommastellen nicht wie erwartet
0.503 sondern 0.502 ergeben.
Runden war schon immer ein Spaß für sich.