c4s hat geschrieben:Das seltsame Verhalten der Nachkommastellen gehört nun mal zu den Fließkommazahlen (in PureBasic Float bzw. Double). Mehr Informationen dazu sollten sich im Web, der PB-Hilfe oder dem Forum finden lassen.
Wandelt einen String in eine Fließkomma-Zahl um. Der String muss ein Fließkomma-Wert im Dezimalformat sein. Das Parsen (Suchen) nach Zahlen stoppt beim ersten nicht numerischen Zeichen.
Hinweis: Strings mit einer enthaltenen Ganzzahl können auch mit Val() und 64 Bit-Fließkommazahlen mit ValD() (mit höherer Genauigkeit als ValF()) konvertiert werden.
Beispiel
Debug ValF("10.24") ; wird 10.24 ausgeben
Unterstützte OS
Alle
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Tja, genau aus diesem Grund habe ich mir bei meinem Mikrocontroller-Basic eine BCD-Arithmetik in Assembler geschrieben.
Da gibt es diese Probleme systembedingt nicht.
Gruß
Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Du kannst nicht BCD und Integer vergleichen. Aber mit BCD kannst du Integer kodieren. So machen es üblicherweise auch Taschenrechner. Einfach mal den wiki-Artikel unter BCD-Code lesen. Dann muss man hier nicht nochmal alles erklären.
Bei Integern bringt dir die BCD-Kodierung keine Vorteile, bei Floats allerdings schon, da damit gewährleistet wird, dass 10.42 auch nach Speichern und wieder Laden immer noch 10.42 und nicht 10.420000000019852 oder ähnliches.
Die Subtraktion zweier ungefahr gleich großer Zahlen ist numerisch instabil: kleine Fehler in den Summanden konnen zu einem großen Fehler im Ergebnis führen
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.