Jack Gautier: Dezimalzahl

Hallo freaks,

ich habe folgendes Problem:

Ein CGI Skript berechnet ich mit Ganzzahlen ohne Kommastelle und reellen Zahlen mit Kommastelle  Operationen. Das Ergebnis hat dann das entsprechende Format. Mal Dezimalzahl mal Ganzezahl.

Die Variable soll aber immer zwei Dezimalstellen haben.

Das bei einer Ganzzahl z.B. 9 ein Komma und zwei Nullen angefügt werden... Ergebnis  9,00

Das eine reelle Zahl z.B. 3.56789 auf zwei Stellen nach dem Punkt gerundet und der Punkt durch ein Komma ersetzt wird... Ergebnis  3,57

Dank für die Hilfe

Jack Gautier

  1. hallo

    suche unter CPAN (http://www.perl.com/CPAN/) nach einem entsprechenden Modul. Du bist 100%-ig nicht der erste, der vor diesem Problem steht :)

    bis nextens
    xitnalta

  2. Die Variable soll aber immer zwei Dezimalstellen haben.

    Das bei einer Ganzzahl z.B. 9 ein Komma und zwei Nullen angefügt werden... Ergebnis  9,00

    Das eine reelle Zahl z.B. 3.56789 auf zwei Stellen nach dem Punkt gerundet und der Punkt durch ein Komma ersetzt wird... Ergebnis  3,57

    Es geht hier doch nur um eine Formatierung des Ausgabe-Strings? Dies könnte doch leicht mit 'sprintf' erledigt werden:

    $result = sprintf("%.2f", $value); # ergibt 2 Nachkommastellen

    $result =~ s/./,/; # ersetzt den Dezimalpunkt durch ein Komma.

    Allerdings wird wohl durch sprintf nicht wirklich gerundet soweit ich weiß, sondern einfach die weiteren Stellen abgeschnitten. Dies könnte man noch durch eine kleine Funktion erledigen...

    Martin