- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: Multiplikation falsch??

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242

    Multiplikation falsch??

    Anzeige

    Praxistest und DIY Projekte
    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?

    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ß
    }
    Gruß
    fredyxx

  2. #2
    Unregistriert
    Gast
    an dieser Stelle ** Serial.println (x); *** zeigt der Serielle Monitor ein Ergebnis von 53624.64.
    Richtig wäre jedoch 45612.1192716036 !!
    Wie kommst du drauf, daß "double x = 231.56994*231.56994;" 45612.1192716036 wäre?

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Zitat Zitat von Unregistriert Beitrag anzeigen
    Wie kommst du drauf, daß "double x = 231.56994*231.56994;" 45612.1192716036 wäre?
    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

  4. #4
    HaWe
    Gast
    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 !

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    du weißt aber schon, dass bei AVRs mit der Arduino IDE double dasselbe ist wie float? (max. 7-8 digits)
    Nein, wusste ich nicht

    und wo ist die Zeile mit 1000*1000?
    1000*1000 ist 1 Mio, das ist long, nicht int, und auch nicht float!
    Die habe ich mal versuchsweise hinter double x = eingegeben und erhielt dann das Ergebnis 16960.00

    ich würde bei float-Arithmetik mit Konstanten auch immer einen Dezimalpunkt setzen, damit der Compiler nicht fälschlich mit Integer-Arithmetik rechnet!
    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-Universum

    DANKE

    Gruß
    fredyxx

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von fredyxx Beitrag anzeigen
    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-Universum
    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 !

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Gibt die Konsole FließkommaZahlen immer nur mit 2 Stellen hinter dem Punkt aus oder kann man das ändern?

    Gruß
    fredyxx

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.207
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Zitat Zitat von Rabenauge Beitrag anzeigen
    DANKE

    Gruß
    fredyxx

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 07.08.2008, 17:38
  2. Multiplikation in ass
    Von haus51 im Forum Assembler-Programmierung
    Antworten: 9
    Letzter Beitrag: 20.03.2007, 13:48
  3. [C] Multiplikation, Casten
    Von IRQ im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 09.03.2007, 15:25
  4. Multiplikation von Single-Zahlen
    Von deuterius im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 25.04.2006, 14:32
  5. Multiplikation von Zahlen mit AVR
    Von HiTech im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 11.06.2004, 17:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress