Jnnbo: PHP - round

Moin,

ich runde meinen Preis so:

$preis1	= round(str_replace (",", ".", $record['p_preis']) * (1+$ps_p1/100),2);

Als Ergebnis erhalte ich z.B. 4,1 nicht wirklich schön, ich hätte gerne 4,10 stehen. Kann ich dieses irgendwie erreichen? Hier finde ich nichts dazu

Mein Ausgangswert ist 2,73 darauf werden 50% gerechnet siehe Formel oben) und soll auf zwei Nachkommastellen gerundet werden.

@Mods, sorry war im falschen Forum unterwegs, könnt ihr es ins Hauptforum verschieben?

akzeptierte Antworten

  1. Hallo,

    Als Ergebnis erhalte ich z.B. 4,1 nicht wirklich schön, ich hätte gerne 4,10 stehen. Kann ich dieses irgendwie erreichen? Hier finde ich nichts dazu

    Es ist auch ganz hilfreich mal in den "Siehe auch"-Block der Doku zu schauen: dort wird nämlich auf die Funktion number_format() verwiesen die genau das machst was du brauchst.

    Gruß,
    Tobias

    1. Hallo tk,

      Es ist auch ganz hilfreich mal in den "Siehe auch"-Block der Doku zu schauen: dort wird nämlich auf die Funktion number_format() verwiesen die genau das machst was du brauchst.

      danke, ich hab es jetzt so umgesetzt

      $preis1	= number_format(round(str_replace (",", ".", $record['p_preis']) * (1+$ps_p1/100),2), 2, ',', ' ');
      
  2. Moin!

    $preis1	= round(str_replace (",", ".", $record['p_preis']) * (1+$ps_p1/100),2);
    

    By the way_ Es ist generell keine gute Idee, die Zahlen in einem Format zu speichern, in dem diese nicht als Zahlen behandelt werden können (Komma als Dezimaltrenner!). Für die Ausgabe auch mit dem deutschen Komma und dem Punkt als Tausender-Trennzeichen gibt es:

    echo "€ ", number_format ( 12345.678 ,2 , ',' , '.' );
    

    Jörg Reinholz

    1. Hallo Jörg,

      By the way_ Es ist generell keine gute Idee, die Zahlen in einem Format zu speichern, in dem diese nicht als Zahlen behandelt werden können (Komma als Dezimaltrenner!). Für die Ausgabe auch mit dem deutschen Komma und dem Punkt als Tausender-Trennzeichen gibt es:

      ich habe leider kein Einfluss auf die Schreibweise. Die Daten erhalte ich von meinem Lieferanten. Ich könnte zwar alle Daten beim Einspielen berichten aber die Arbeit spare ich mir jetzt erstmal, hab eh noch so viel zu tun.

      1. Moin!

        Ich könnte zwar alle Daten beim Einspielen berichten aber die Arbeit spare ich mir jetzt erstmal, hab eh noch so viel zu tun.

        Ja, nee. Schon klar. Aber wenn ich die Bockstürze mit str_replace mitten im Programm sehe, dann sehe ich auch, dass Du durch das "Arbeit sparen" mehr Arbeit hast und das Skript fehleranfällig wird.

        Jörg Reinholz