*Markus: Formatierte Ausgabe gibt eine falsche Ziffer aus?

Hallo,

ich beobachte gerade ein sonderbares Phänomen. Ich lese aus einer DB u.a. folgende Sätze aus:

+-------+
| preis |
+-------+
| 102.8 |
|  95.9 |
|  89.7 |
+-------+

Irgendwann später gebe ich diesen Datensatz so aus:

  
echo printf("%.2f", $tupel['preis']);  

Als Ergebnis bekomme ich aber plötzlich so etwas:
95.905
102.806
89.705

Wo kommt plötzlich die 3. Stelle her, v.a. wieso ist diese 5 und 6?

Gebe ich nur $tupel['preis'] aus, bekomme ich diese Werte:
 102.8
  95.9
  89.7

Somit muss es definitiv an der printf-Anweisung liegen. Nur wie kann ich mir das erklären?

Danke
Markus

  1. Hi,

    echo printf("%.2f", $tupel['preis']);

    
    >   
    > Als Ergebnis bekomme ich aber plötzlich so etwas:  
    > 95.905  
    > 102.806  
    > 89.705  
    >   
    > Wo kommt plötzlich die 3. Stelle her, v.a. wieso ist diese 5 und 6?  
      
    Weil der definierte Rückgabewert von printf nun mal die Länge der ausgegebenen Zeichenkette ist - was man übrigens auch im Manual nachlesen kann.  
      
    printf selber ist schon eine Funktion, die eine Ausgabe erzeugt - da noch mal echo vorzusetzen, ist also a) überflüssig, und führt b) natürlich zum zu erwartenden Effekt, dass eben der Rückgabewert der Funktion ausgegeben wird.  
      
    MfG ChrisB  
      
    
    -- 
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    
    1. Hallo,

      ok, da sah ich wohl den Wald vor lauter Bäumen nicht mehr. So funktioniert die ganze Sache natürlich.

      Grüße,
      Markus

  2. Hallo,

    var_dump ($tupel) würde ich erstmal bestimmen. damit du weißt, wie die werte wirklich ausschauen.

    Gruß

    jobo