laserbrain: Format umwandeln einer Zahl...

Hi Leute,

also ich habe hier ein Problem. Ich bekomme Zahlen geliefert wie z.B.
8,60000000000000E+001 jetzt will ich mit PHP ein 86 daraus machen. Wie kann ich das anstellen. Ich will genrell die Exponenten weg haben und normale Zahlen mit Komma haben...

  1. Hallo!

    also ich habe hier ein Problem. Ich bekomme Zahlen geliefert wie z.B.
    8,60000000000000E+001

    Was heisst du bekommst sie geliefert? Woher?
    Ist 8,60000000000000E+001 ein String?

    --
    LG,
    Snafu
    1. Servus,

      Was heisst du bekommst sie geliefert? Woher?

      Eine DB2 liefert die Zahl so aus.

      Ist 8,60000000000000E+001 ein String?

      Ja, gettype sagt, dass es ein String ist.

      1. Hallo!
        Wüsste jetzt nicht ob php aus dieser Darstellung eine gültige Gleitkommazahl parsen kann.

        Eine DB2 liefert die Zahl so aus.

        Kannst du nicht mit der DB die Zahl anders ausspucken?

        1. das E+001 muss weg
        2. statt dem , gehört ein . hin
          Wenn dus mit der DB gleich als 8.600000... ausspucken kannst, dann kannst du einfach mit (float) $foo; oder settype($foo, float); den Wert parsen, wenn der String in $foo steht.
        --
        LG,
        Snafu
        1. Sers,

          1. das E+001 muss weg

          nein das geht nicht, weil auch E+002 o. E+003 da stehen kann.

          1. statt dem , gehört ein . hin

          Das könnte mi PH ersetzen.

          Wenn dus mit der DB gleich als 8.600000... ausspucken kannst, dann kannst du einfach mit (float) $foo; oder settype($foo, float); den Wert parsen, wenn der String in $foo steht.

          Das Problem ist, dass diese DB2 sehr wenig kooperativ ist.

          1. Hallo nochmal!
            Hm hab gedacht du bekommst die nur mit 10^1 geliefert.
            Naja, dir bleibt wahrscheinlich eh nicht erspart was eigenes zusammenzustückeln.

            // -------------  
            function myfloat($foo) {  
             $foo = explode("E", $foo);  
             $foo[0] = str_replace(",", ".", $foo[0]);  
             return ((float) $foo[0]) * pow(10, (float) $foo[1]);  
            }  
            //--------------
            

            Fehlerbehandlung nach belieben einbauen.

            --
            LG,
            Snafu
  2. Hi,

    was passiert wenn du number_format($zahl,2) anwendest?

    Paul

  3. echo $begrüßung;

    also ich habe hier ein Problem. Ich bekomme Zahlen geliefert wie z.B.
    8,60000000000000E+001 jetzt will ich mit PHP ein 86 daraus machen. Wie kann ich das anstellen. Ich will genrell die Exponenten weg haben und normale Zahlen mit Komma haben...

    Bist du sicher, dass da in Komma als Dezimaltrennzeichen steht? Dann musst du das erstmal mit Stringersetzung zu einem Punkt machen. Dann kannst du mit Typecast zu float oder der Funktion floatval() einen ordentlichen Zahlentyp draus machen, den du anschließend auch nach int typcasten oder mit intval() behandeln kannst.

    echo "$verabschiedung $name";

    1. Hello,

      also ich habe hier ein Problem. Ich bekomme Zahlen geliefert wie z.B.
      8,60000000000000E+001 jetzt will ich mit PHP ein 86 daraus machen. Wie kann ich das anstellen. Ich will genrell die Exponenten weg haben und normale Zahlen mit Komma haben...

      Bist du sicher, dass da in Komma als Dezimaltrennzeichen steht? Dann musst du das erstmal mit Stringersetzung zu einem Punkt machen. Dann kannst du mit Typecast zu float oder der Funktion floatval() einen ordentlichen Zahlentyp draus machen, den du anschließend auch nach int typcasten oder mit intval() behandeln kannst.

      Dazu gibt es auch Lösungsvorschläge in den UCN des PHP Manual
      http://www.php.net/manual/de/function.number-format.php#83740

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de