Re: Mathematische Frage Kategorie: Programmierung (von Markus - 6.11.2005 19:07) | ||
Als Antwort auf Re: Mathematische Frage von Udo - 6.11.2005 18:34 | ||
| ||
> > 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 MfG Markus | ||
Antwort schreiben Antworten: Re: Mathematische Frage (von krassos - 7.11.2005 4:20) |