- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 25

Thema: Ergebnis einer ungültiger Rechnung erkennen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    alles klar, so gehts mir zur Zeit mit anderen Dingen auch

    - - - Aktualisiert - - -

    ps:

    zu deinem Code
    Code:
    if (x == NAN) 
    {
       Serial.println("Mist");
    }
    Du kannst nicht x mit NAN vergleichen, NAN ist kein gültiger numerischer Wert.
    Dass du nan auf dem Screen hast, ist die Folge dessen, dass du an Serial.print einen Wert übergibst, der als ungültig definiert ist, und daher gibt print von sich aus nan aus.

    Daher kannst du auch mit if() keine Abfrage machen wie beim Exception-Handling mit try...catch - du musst die Exceptions von dir aus selber, manuell behandeln, wie schon von Sisor angedeutet
    Ich würde floats ggf. mit isnan() oder isinf() testen.
    d.h. z.B. versuchen per
    Code:
    if (isnan(x))
    {
       Serial.println("Mist");
    }
    , oder versuchen, per Flag die C++ Exceptions einzuschalten,
    oder die gültigen/ungültigen Bereiche vorher auszuschließen, wie ich es getan habe..
    Geändert von HaWe (09.07.2016 um 19:46 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Du kannst nicht x mit NAN vergleichen,
    Hier wird das aber so gemacht! Daher mein Versuch

    http://http://forum.arduino.cc/index.php?topic=46912.0

  3. #3
    HaWe
    Gast
    ich persönlich bin nicht überzeugt, dass der Code valide ist, immerhin ist allerdings in Arduinisch einiges möglich, was sonst in C so nicht möglich ist.
    Aber es ist ja auch C++ im Hintergrund: Wer weiß, welche Klassen da verdeckt eingeschlossen wurden, welche Exceptions da verdeckt ausgelöst werden, und was da privat oder public ist.
    Die Tatsache, dass der Code bei dir aber nicht kompiliert wird, stützt zumindest meine Zweifel.

    - - - Aktualisiert - - -

    hier findet man weiterführende Erklärungen:

    http://stackoverflow.com/questions/1...n-and-inf-in-c

    The existence of INFINITY is guaranteed by C99 (or the latest draft at least), and "expands to a constant expression of type float representing positive or unsigned infinity, if available; else to a positive constant of type float that overflows at translation time."

    NAN may or may not be defined, and "is defined if and only if the implementation supports quiet NaNs for the float type. It expands to a constant expression of type float representing a quiet NaN."

    Note that if you're comparing floating point values, and do:

    a = NAN;

    even then,

    a == NAN;

    is false.
    One way to check for NaN would be:

    #include <math.h>
    if (isnan(a)) { ... }

    You can also do: a != a to test if a is NaN.

    There is also isfinite(), isinf(), isnormal(), and signbit() macros in math.h in C99.

    C99 also has nan functions:

    #include <math.h>
    double nan(const char *tagp);
    float nanf(const char *tagp);
    long double nanl(ocnst char *tagp);

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Hallo,

    das geht mir nun doch zu weit in die Tiefe.
    Da es , wie ich oben schon sagte, für mich zZ kein Problem darstellt, möchte ich mich damit nicht weiter beschäftigen und euch auch nicht.

    Danke

    vG

    fredyxx

Ähnliche Themen

  1. Methoden zum Erkennen einer Fehlerbedingung in Microcontroller-Systemen
    Von Dirk im Forum Software, Algorithmen und KI
    Antworten: 23
    Letzter Beitrag: 24.03.2016, 20:01
  2. Sensor oder Schalter zum erkennen einer PokerKarte
    Von Andreas1984 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 1
    Letzter Beitrag: 25.12.2013, 01:17
  3. Division mit Nachkommastellen als Ergebnis???
    Von erik_wolfram im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 22.08.2011, 16:13
  4. Beenden einer ISR erkennen
    Von hacker im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 12.08.2009, 17:34
  5. Wie Abzweigung einer Linie erkennen?
    Von p_mork im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 16.08.2007, 10:39

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress