Ankündigung

Einklappen
Keine Ankündigung bisher.

"nan" Ergebnis einer Berechnung abfangen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    "nan" Ergebnis einer Berechnung abfangen

    Kann man ein "nan" Ergebnis einer Berechnung eigentlich abfangen? Wenn "nan" existiert, sollte das doch möglich" sein.

    (Auch wenn ich weiß, wo der Fehler erzeugt wird und ich nur den Code anders schreiben muss... Es wär' grundsätzlich interessant)
    You do not have permission to view this gallery.
    This gallery has 1 photos.

    #2
    ??? räusper... ???

    Kommentar


      #3
      Die Frage ist m.E. nicht klar. NaN (not a number) kann z.B. bei Division durch 0 enstehen. Das muss man dann eben in der Programmoierung abfangen oder berücksichtigen. Oder was soll der EibPC da sonst machen?
      Ein Popup mit der Meldung "Oh, da stimmt was nicht, meintest Du vielleicht ..."
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #4
        Ne, aber eine Funktion a la "if Ergebnisvariable==nan() then ...." Wäre sicher praktisch.
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar


          #5
          Zitat von Uwe! Beitrag anzeigen
          Ne, aber eine Funktion a la "if Ergebnisvariable==nan() then ...." Wäre sicher praktisch.
          Treffer - versenkt!

          Ich konnte mein Programm natürlich berichtigen - es war tatsächlich eine Division durch 0, enertegus, nur generell wär's schon interessant, solche "exceptions" abfangen zu können.

          Btw. der Fehler entstand, weil ich das Vorzeichen der Temperatur "elegant" ermitteln wollte, indem ich sign = t / abs(t) gewählt hatte. Ein bisserl blauäugig...

          Kommentar


            #6
            Ausnahmenbehandlung ist sicher was anderes als was Uwe! vorgeschlagen hatte. In C erledigt man das mit einer errno-Variable - da ist man dann bei elog() und lognum().
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              aus der elog() Meldung kann ich aber nicht drauf schließen, welche Variable jetzt einen Fehler verursacht hat, oder?

              Aber richtig, bir ging es nicht um eine vollständige Fehlerbehandlung, sondern darum gezielt bestimmte "Werte" abzufragen, die sich sonst nicht darstellen lassen, also ebeb z.B. ein "nan".
              Idee: was kommt denn bei "if Variable = 1 / 0 then ...." raus? Wäre das im Falle von "Variable = nan" true?

              Oder eleganter:

              NAN = 1 / 0
              if Variable = NAN then ....
              ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

              Kommentar


                #8
                Wie auch in http://de.wikipedia.org/wiki/NaN dargestellt, müsste das bestenfalls mit einer isnan Funktion realisiert werden. NAN ist aber nicht 1/0, das wäre zu kurz gedacht. Z.b. ist auch log(-2) NaN usw.
                Besser ist da aber
                if d!=0 then x=1/d endif
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #9
                  Zitat von enertegus Beitrag anzeigen
                  mit einer isnan Funktion realisiert
                  das war ja mein erster Gedanke / Vorschlag
                  Zitat von enertegus Beitrag anzeigen
                  NAN ist aber nicht 1/0, das wäre zu kurz gedacht.
                  schon klar. Mir ging es um die Idee, ob man einer Variablen absichtlich den Wert "nan" zuweisen kann, um sie dann in Vergleichen zu verwenden.

                  Dein Beispiel ist natürlich sauber, das müsste man dann aber theoretisch bei jeder Division so machen. Ok, umgekehrt müsste man auch bei jeder Division das Ergebnis mit =isnan() prüfen. Kommt letztlich fast auf's gleiche raus....
                  ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                  Kommentar


                    #10
                    Zitat von Uwe! Beitrag anzeigen
                    Kommt letztlich fast auf's gleiche raus....
                    das mein ich ja damit.
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      ok, hab nur eine Schleife länger gebraucht, um es auch zu verstehen... :-)
                      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                      Kommentar

                      Lädt...
                      X