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

Re: Mathematische Frage Kategorie: Programmierung (von krassos - 7.11.2005 4:20)
Als Antwort auf Re: Mathematische Frage von Markus - 6.11.2005 19:07
Ich nutze:
C-Control II Unit, CC2-ReglerBoard, OSOPT V3.0
> > > 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
> >
>
> Hallo Udo!
> Erstmal Danke für deine Antwort!
> also dass Ergebnis würde immer gerundet, wie sieht es denn aus bei der Berechnung.
> Beispiel:  3.33 * 4.55
>
> rechnet der Controller dann
> a) 3.33 * 4.44 = 14.7852 --> 15 oder
> b) 3 * 4 = 12
>

Hallo Markus,

die "richtige" Lösung für Dein Problem kann man nur finden, wenn man wei� wofür oder
wie genau Du das Ergebnis brauchst und wie Du es weiterverarbeitest.

3.33*4.44 würde der Controller schon korrekt berechnen. Du mu�t das Ergebnis nur auf
eine Float-Variable zuweisen.

GruÃ? krassos



    Antwort schreiben


Antworten: