Thorsten: Zahl mit zwei nachkommastellen Ausgeben

hallo zusammen

ich habe eine Ausgabe von der Datenbank. Dabei ein Feld mit einem Preis. Wenn ich Die Zeile einfach printe werden die nullen nach dem Komma nicht angezeigt, ich möchte aber gerne 2 Dezimalstellen ausgeben.

Ich hab mir schon die Funktion number_format angesehen, ich versteh es aber nicht wo ich das einbauen muss und vor allem wie......

Das hier ist der Code von der While schleife der Ausgabe:

while ($line=mssql_fetch_array($results))
 {

if ($c % 2 == 1) { print "\t<tr bgcolor="#ffffff">\n\t\t<td>"; }
      else { print "\t<tr bgcolor="#c0c0c0">\n\t\t<td>"; }

print $line[0];
               print "</td>\t\t<td>";
               print $line[1];
      print "</td>\t\t<td>";
               print $line[3];
               print "</td>\t\t<td align='right'>";
               print $line[10];
               print "</td>\t\t<td align='right'>EURO";
      print "</td>\t\t<td align='right'>";
               print $line[2];

if ($c % 2 == 1) { print "\t<tr bgcolor="#ffffff">\n"; }
      else { print "\t<tr bgcolor="#c0c0c0">\n";}

$c++;

print "\t</tr>\n";

;}

____________________
Bei print $line[10]; ist das Feld wo der Preis ausgegeben wird.

wäre sehr nett wenn mir jemand hilft ;)

  1. Hallo Thorsten,

    ich habe eine Ausgabe von der Datenbank. Dabei ein Feld mit einem Preis. Wenn ich Die Zeile einfach printe werden die nullen nach dem Komma nicht angezeigt, ich möchte aber gerne 2 Dezimalstellen ausgeben.

    das ist bei Preisen durchaus vernünftig und üblich (außer an Tankstellen).

    Ich hab mir schon die Funktion number_format angesehen, ich versteh es aber nicht wo ich das einbauen muss und vor allem wie......

    print $line[10];
    Bei print $line[10]; ist das Feld wo der Preis ausgegeben wird.

    dann solltest Du number_format auf $line[10] anwenden.

    Tipp:
    Für Preise solltest Du in der Datenbank den Datentyp currency verwenden, falls
    Du dies nicht ohnehin schon tust. Wenn Du mit den Preisen in Deiner Anwendung
    nicht mehr rechnen musst, dann könntest Du die Ausgabe gleich als Zeichenkette
    aufbereiten lassen, dazu bietet Dir Transact-SQL, der SQL-Dialekt von MS SQL-Server
    die Funktion CONVERT.

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      [zwei Nachkommastellen]
      das ist bei Preisen durchaus vernünftig und üblich (außer an Tankstellen).

      ja, dass die ihre Zehntel-Cent nicht mal langsam abschaffen können ... Sollen sie doch meinetwegen bei der nächsten Preisänderung von 1.169 auf 1.180 erhöhen.

      Tipp:
      Für Preise solltest Du in der Datenbank den Datentyp currency verwenden, falls Du dies nicht ohnehin schon tust.

      Sicher eine gute Idee, mit den DB-Datentypen kenne ich mich nicht so aus.

      Ergänzend dazu ist es sehr empfehlenswert, im Programm selbst sämtliche Rechnungen (sind ja meist nur Additionen und/oder Subtraktionen) in Ganzzahlen durchzuführen, dann eben in Cent, und die Wert immer erst bei der Ausgabe umzuformatieren. So vermeidet man die bei Fließkomma-Arithmetik gern auftretenden Rundungsfehler.

      So long,
       Martin

      --
      Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
        (Gunnar Bittersmann)
      1. Ja super ;)))
        Danke Vinzenz :)

        Hab da mal rumgebastelt und mit Deiner Anmerkung auf $line[10] anwenden einfach die eigentliche Zeile

        print &line[10];

        ersetzt durch

        print number_format ($line[10], 2);

        das wars und funktioniert.

        Mit der Datenbank war auch ne Gute Idee, allerdings ist das ein Feld der SAP Datenbank die darf ich nicht anfassen weil wir sonst den Support verlieren.

        Danke danke ;)

        1. Hello,

          Mit der Datenbank war auch ne Gute Idee, allerdings ist das ein Feld der SAP Datenbank die darf ich nicht anfassen weil wir sonst den Support verlieren.

          ...und dann solltest Du auch nicht so leichtfertig "Currency" verwenden, weil die DBs dann zum Teil die Währungszeichen mit ausgeben, was aber in einer Mehrwährungsanwendung absolut kontraproduktiv wäre...

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      2. Hi

        ja, dass die ihre Zehntel-Cent nicht mal langsam abschaffen können ... Sollen sie doch meinetwegen bei der nächsten Preisänderung von 1.169 auf 1.180 erhöhen.

        Was tankst Du denn, dass sie es auf 1.180 'erhoehen' koennen? Ich wuerd gern mal wieder 1.18 zahlen...

        Was mich grad etwas wundert: kennst Du keine Tankstellen die nicht .9 Cent benutzen? Ich kenn z.b. Tankstellen die mit .4 oder.5 Cent berechnen. Da spart man bei 1x volltanken immerhin 20 Cent! *wichtig tu*

        Hast ja recht. Aber wie heisst es so schoen? Wer den halben Cent nicht ert ist den ganzen nicht wert oder so... ;)

        1. n'Abend,

          Was tankst Du denn, dass sie es auf 1.180 'erhoehen' koennen?

          ganz gewöhnlichen Diesel. Gerade heute auf dem Heimweg von der Arbeit noch für 1.169 bei JET vollgetankt.

          Was mich grad etwas wundert: kennst Du keine Tankstellen die nicht .9 Cent benutzen?

          Ehrlich gesagt: Nein.
          Kurz nach der Euro-Einführung gab es hier in der Gegend einige Tankstellen, die in Anlehnung an den Pfennig noch Preisschritte von halben Cents gemacht haben. Nach ein paar Monaten haben die sich das aber abgewöhnt.

          Ich kenn z.b. Tankstellen die mit .4 oder.5 Cent berechnen. Da spart man bei 1x volltanken immerhin 20 Cent! *wichtig tu*

          Boah! Aber ungefähr genausoviel gewinnt man manchmal ganz zufällig, wenn man den Tankrüssel ansetzt und feststellt, dass vom vorherigen Kunden noch ein Schluck Suppe im Schlauch ist.
          Denn merke: KFZ-Tankanlagen sind sogenannte Leerschlauchanlagen - soll heißen, die Restmenge im Schlauch sollte man eigentlich nach dem Zapfen noch rauslaufen lassen. Oder salopp ausgedrückt: Der Schlauchinhalt gehört dem Kunden. Also nach dem Tanken immer erst Rüssel steckenlassen, Schlauch hochheben und leerlaufen lassen (dann drielt auch weniger daneben und versaut den Einfüllstutzen oder die Umgebung).

          Hast ja recht. Aber wie heisst es so schoen? Wer den halben Cent nicht ert ist den ganzen nicht wert oder so... ;)

          Ja, aber ich fühle mich von Preisen, die mit einer 9 enden, immer irgendwie veräppelt. Wenn ich eine Packung Kekse für 99 Cent sehe, registriere ich doch im Unterbewusstsein gleich, "ah, ein Euro". Also warum wollen die Einzelhändler dann nicht einfach "1 Euro" aufs Preisschild schreiben? Damit man nicht so leicht im Kopf addieren kann? Ist doch Blödsinn!

          Schönen Abend noch,
           Martin

          --
          Was du heute kannst besorgen,
          das geht sicher auch noch morgen.
          1. Hi,

            Boah! Aber ungefähr genausoviel gewinnt man manchmal ganz zufällig, wenn man den Tankrüssel ansetzt und feststellt, dass vom vorherigen Kunden noch ein Schluck Suppe im Schlauch ist.
            Denn merke: KFZ-Tankanlagen sind sogenannte Leerschlauchanlagen - soll heißen, die Restmenge im Schlauch sollte man eigentlich nach dem Zapfen noch rauslaufen lassen. Oder salopp ausgedrückt: Der Schlauchinhalt gehört dem Kunden. Also nach dem Tanken immer erst Rüssel steckenlassen, Schlauch hochheben und leerlaufen lassen (dann drielt auch weniger daneben und versaut den Einfüllstutzen oder die Umgebung).

            Hm... Darueber hab ich noch nie nachgedacht. Stimmt aber! *geistig notier*

            Ja, aber ich fühle mich von Preisen, die mit einer 9 enden, immer irgendwie veräppelt. Wenn ich eine Packung Kekse für 99 Cent sehe, registriere ich doch im Unterbewusstsein gleich, "ah, ein Euro". Also warum wollen die Einzelhändler dann nicht einfach "1 Euro" aufs Preisschild schreiben? Damit man nicht so leicht im Kopf addieren kann? Ist doch Blödsinn!

            Right. Das ist etwas das ich auch nie verstehe. Immerhin: Wenn man bei 99 Cent mit nem Euro rechnet bekommt man 101 fuer 100! Und noch einen Cent extra! :D Das ist doch mal positiv. *lacht* Lustigerweise gibts genug Laender in denen man gar nicht in einzelnen Cent rechnet. Hier scheints aber einen grossen Unterschied zu machen.

            Gute Nacht!