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 | ||
| ||
> > > 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: |