Verwirrung beim Konvertieren von String zu Float - var_dump: float(NAN)

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

  • Verwirrung beim Konvertieren von String zu Float - var_dump: float(NAN)

    Hallo!

    Entweder ist das seltsam, oder ich bin es...

    Code:
    $sValue = "0.44";
    var_dump((float)$sValue); // float(NAN)
    var_dump((float)$sValue); // float(0.44)
    Ich quäle mich schon seit ner Stunde mit 'ner Summenberechnung rum, und während ich das hier poste und ein Beispiel schreibe fällt mir auf, dass der 2. Aufruf anderes liefert als der erste...? (Browserausgabe)

    Kann mir das jemand erklären?

    System: Win7 64, Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1
    fragen macht spass, denken nicht

  • #2
    Hallo,

    was passiert zwischendurch mit dem Wert oder ist das schon der gesamte Code, der dieses Verhalten verursacht? Warum versuchst du, mit Strings zu rechnen? Konvertiere den Wert einmal in einen numerischen und arbeite mit dem weiter.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      ja, das ist tatsächlich schon der ganze Code. Wenn ich einen neuen Wert, bzw. ne Anweisung vorsetze, dann stimmt die Ausgabe auch wieder.

      Ich habe hier mit dem String gerechnet, weil die Werte ursprünglich aus der Datenbank kommen. Als String.

      Und beim Konvertieren zu float ist mir das aufgefallen. Der Seitenaufruf kam nach einem Post.

      Da das jetzt aber nicht mehr nachvollziehbar ist, da ich den Browser zwischzeitlich geschlossen hatte... muss ich mich wohl weiter wundern was es war ..

      danke trotzdem!
      fragen macht spass, denken nicht

      Kommentar


      • #4
        Zitat von kalleplom Beitrag anzeigen
        weil die Werte ursprünglich aus der Datenbank kommen. Als String
        *hust*
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          @AmicaNoctis

          Die MySQL-Extension von PHP liefert Zahlenwerte tatsächlich als String. Dies hat damit zu tun, dass PHP nicht die selben Datentypen wie MySQL hat. zB. ist ein 32-bit unsigned Integer in einem (32-bit) PHP nicht abspeicherbar. Ähnlich ist es bei Dezimalzahlen, diese unterstützt PHP überhaupt nicht (Float ist kein richtiger Dezimalzahldatentyp). Der einzige Umweg führt über einen String.

          Kommentar


          • #6
            Ja, ich merk grad ich war auf nem falschen Dampfer. Ich dachte, die Werte sind als String in der DB drin.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Ich erhalte bei beiden Aufrufen float(0.44) als Ergebnis.

              Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4 Perl/v5.10.0
              This is what happens when an unstoppable force meets an immovable object.

              Kommentar

              Lädt...
              X