Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Mathematische Frage Kategorie: Programmierung (von Udo - 6.11.2005 18:34)
Als Antwort auf Mathematische Frage von Markus - 6.11.2005 14:16
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, eigenes Board, OSOPT_V2
> Hallo CC2 Fan Gemeinde!
> Ich habe da eine kurze grundlegende Frage.
>
> Ich muss eine Variable x berechnen, die Formel lautet
>
> x = (y *5.55ms *1.41) /10      wobei y einen Wet von 0-8000 annehmen kann.
>
> Für die Variable x verwende ich eine long Variable.
>
> Wie muss nun meine Rechnung aussehen im Programm aussehen? Wie ist dass mit den
> Kommastellen, rechnet der Controller die mit? Dann wäre a richtig. Wenn ich erst in ganze Zahlen
> umwandeln muss müsste ich ja dementsprechend am Ende nochmal dividieren wie im Beispiel b:
> also 5.55ms * 100000 = 555
> und 1.41 * 100 = 141
>
>
> a) x = (y *5.55ms *1.41)/10
>
> b) X = (y 555s *141) /100000000
>
> Leider habe ich den Controller nicht zur Hand um es ausprobieren zu können...
>
> MfG Markus

Hallo,

eine long-Variable kann keine Nachkommastellen.
Wie du am Besten vorgehst, hängt in erster Linie von der Genauigkeit ab, die du benötigst.
Meiner Meinung nach wäre es am einfachsten, wenn du deine Werte in Mikrosekunden berechnest.
In deinem Falle würde sich dann ergeben:

( 5,55 * 1,41 / 10 * 1000)  = 782,55 ergibt gerundet 783

also

x = y * 783     x ist dein Wert in Mikrosekunden.

Dieser Wert lässt sich dann jederzeit wieder auf ms (oder Sekunden) reduzieren.

Die Rechnung:
X = (y 555s *141) /100000000
würde zum Desaster führen, da x (wie schon gesagt) keine Nachkommastellen kennt.
Du würdest also nur Werte zwischen 0 und 6 erhalten.
GruÃ?

Udo


    Antwort schreiben


Antworten:

Re: Mathematische Frage (von Markus - 6.11.2005 19:07)
    Re: Mathematische Frage (von krassos - 7.11.2005 4:20)