Hallo,
ich will für die C-Control I ein paar Funktionen schreiben, die das Hantieren mit Fließkommazahlen ermöglichen.
Zum Aufbau: Die C-Control ist ein 8 Bit Mikrocontroller, kann aber einfach mit Integer Werten hantieren.
Ich habe festgelegt, dass eine Fließkommazahl ein Integer Wert ist:
0,1 > 01000
2,0 > 20000
1,5 > 15000
0,0003 > 00003
Plus und Minut kann man damit wunderbar rechnen. Als Print Ausgabe nutze ich folgende Routine:
Das läuft auch wunderbar. Natürlich kann ich keine Negativen Werte darstellen, das ist aber egal.Code:define dummy as word define dummy2 as word define dummy3 as word function print_single(x ref dummy) print (x/10000) & "." & (x mod 10000) end function
Jetzt arbeite ich an eine Methode um multiplizieren und dividieren zu können:
... Soweit so gut.Code:function mul_singe(x ref dummy, y ref dummy2) dummy3 = (...) return dummy3 end function function div_singe(x ref dummy, y ref dummy2) dummy3 = (...) return dummy3 end function
In Visual Basic funktioniert folgender Code für Multiplikation:
und für Division:Code:d = (x * (y Mod 10000)) / 10000
(Fragt mich nicht mehr wie ich drauf gekommen bin ... ist schon was länger her).Code:d = ((y Mod 10000) / x) * 10000
Leider geht das auf der C-Control nicht, da immer abrundet:
5000 / 10000 = 0 u.s.w.
Kennt jemand einen alternativen Code?







Zitieren

Lesezeichen