PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Division mit Nachkommastellen als Ergebnis???



erik_wolfram
21.08.2011, 21:37
Hallöchen,
ich stehe vor folgendem Problem:

Ich möchte die Winkel für mehrere Servos berechnen - dafür brauche ich den Arc-tangens (atan - math.c). Doch mein Problem ist die Division von "a" durch "b" zuvor, da bei der Division keine Nachkommastellen herauskommen ... sprich bei z.B. 60/80 erhalte ich 0
Ich suche nun schon ewig nach etwas brauchbaren bin aber bis jetzt erfolglos - ich habe nur von einer div() Funktion gelesen, aber bekomme selbst diese nicht zum laufen...

Es wäre schön wenn mir jemand aushelfen könnte!

Mit freundlichen Grüßen Erik

danimath
21.08.2011, 21:45
Moin Erik,

probier mal 60.0/80.0.

Wenn Du 60/80 teilst, dann teilst Du Integers - da kommt dann auch 0 raus.
Und wenn's in Variablen steht: (double) (a) / (double) b.

viele Grüße
Andreas

Besserwessi
21.08.2011, 21:46
Die ATAN funktion benötigt ohnehin schon Fließkomma-Zahlen. Man kann also die Division auch mit Fließkomma (double , auch wenn das bei AVR GCC nur 32 Bit sind) machen. Es gibt dann in math.h auch noch die Funktion atan2(y,x) , die gerade atan(y/x) berechnet. Der Vorteil liegt in der Berücksichtigung der Quadranten, weniger beim einsparen der Division.

erik_wolfram
22.08.2011, 17:13
Dankeschön - so einfach kann es sein, das mit dem atan2 hatte ich gesehen, aber die Funktion nicht verstanden...