Wie kommst du drauf, daß "double x = 231.56994*231.56994;" 45612.1192716036 wäre?an dieser Stelle ** Serial.println (x); *** zeigt der Serielle Monitor ein Ergebnis von 53624.64.
Richtig wäre jedoch 45612.1192716036 !!
Hallo,
an dieser Stelle ** Serial.println (x); *** zeigt der Serielle Monitor ein Ergebnis von 53624.64.
Richtig wäre jedoch 45612.1192716036 !!
Und 1000 * 1000 ist 16960.00!!??
Wie kann das sein?
GrußCode:// **************************************Unterprogramm lzahn2Prog ******************************* float lzahn2Prog ( float x1, float y1) { // float P0_P1 = sqrt(pow(x1,2) + pow(y1,2)); //Gerade P0-P1 float P0_P1 = sqrt(x1 * x1 + y1 * y1); //Gerade P0-P1 float CosinusW4 = (114196 - pow(P0_P1, 2)) / 102960; float W4 = acos(CosinusW4); // die Ausgabe erfolgt im Bogenmaß float lzahn2 = sqrt( (21164.49 - cos (W4 + 3.14159265358979323846 / 180 * 5.26)) * 20574 ); double x = 231.56994*231.56994; Serial.print ("x = "); Serial.println (x); Serial.println (CosinusW4); Serial.println (W4); delay(2000); return lzahn2; // die Ausgabe erfolgt im Bogenmaß }
fredyxx
Wie kommst du drauf, daß "double x = 231.56994*231.56994;" 45612.1192716036 wäre?an dieser Stelle ** Serial.println (x); *** zeigt der Serielle Monitor ein Ergebnis von 53624.64.
Richtig wäre jedoch 45612.1192716036 !!
Frage ich mich nun auch! Weil ich in Excel mit der richtigen Zahl nämlich 213,56994 und im Arduino mit der verdrehten 231.56994 gerechnet habe. 3 x kontrolliert und doch verkehrt!!
Der Fehler wurde ja auch noch bestätigt, weil 1000 * 1000 immer noch 16960.00 ergibt!!??
Das ist aber nun kein Dreher.
Gruß
fredyxx
hallo,
du weißt aber schon, dass bei AVRs mit der Arduino IDE double dasselbe ist wie float? (max. 7-8 digits)
und wo ist die Zeile mit 1000*1000?
1000*1000 ist 1 Mio, das ist long, nicht int, und auch nicht float!
ps,
ich würde bei float-Arithmetik mit Konstanten auch immer einen Dezimalpunkt setzen, damit der Compiler nicht fälschlich mit Integer-Arithmetik rechnet!
also:
x/180.0, nicht x/180 !
Nein, wusste ich nichtdu weißt aber schon, dass bei AVRs mit der Arduino IDE double dasselbe ist wie float? (max. 7-8 digits)
Die habe ich mal versuchsweise hinter double x = eingegeben und erhielt dann das Ergebnis 16960.00und wo ist die Zeile mit 1000*1000?
1000*1000 ist 1 Mio, das ist long, nicht int, und auch nicht float!
Der Tipp ist sehr gut, denn 1000.0 * 1000.0 ist dann auch tatsächlich 1000000 . Hurra. Sehr seltsam. Das habe ich so auch noch nicht gelesen, aber sicher steht es irgendwo im Arduino-Universumich würde bei float-Arithmetik mit Konstanten auch immer einen Dezimalpunkt setzen, damit der Compiler nicht fälschlich mit Integer-Arithmetik rechnet!
DANKE
Gruß
fredyxx
Das "Arduino-Universum" ist sicher nicht der kompetente Ort für solche Fragen. Hier geht es um C bzw. C++ und da hilft ein Buch über C eher weiter.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Gibt die Konsole FließkommaZahlen immer nur mit 2 Stellen hinter dem Punkt aus oder kann man das ändern?
Gruß
fredyxx
Kann man.
https://www.arduino.cc/en/serial/print
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Lesezeichen