Ausgabeformatierung

Hi,

ich hab mich lang dagegen gewehrt, aber an Perl scheint man gelegentlich nicht vorbeizukommen. Deshalb mal ne einfache Frage:

Wie kann ich eine Gleitkommazahl auf zwei Stellen nach dem Punkt gerundet und mit „,“ statt mit „.“ als Dezimaltrennzeichen ausgeben, ohne den Wert des Skalars, welches diese Zahl enthält, dabei zu verändern?

Oder anders: In $var steht „1.2345“, und ich möchte dies als „1,24“ ausgeben lassen, ohne $var zu verändern.

Klar, mit Hilfsvariablen, RegEx und sprintf kein Problem. Aber ich wünsche es mir etwas eleganter und kürzer :smile:

Wer weiß was?

Gruß,

Malte

Hallo Malte,

Oder anders: In $var steht „1.2345“, und ich möchte dies als
„1,24“ ausgeben lassen, ohne $var zu verändern.

du weisst doch selbst schon, wie es geht. Genau dafür ist (s)printf gemacht. Ich kenne auch keine bessere Lösung.

gruss
bernhard

Hallo,

Wie kann ich eine Gleitkommazahl auf zwei Stellen nach dem
Punkt gerundet und mit „,“ statt mit „.“ als
Dezimaltrennzeichen ausgeben, ohne den Wert des Skalars,
welches diese Zahl enthält, dabei zu verändern?

Oder anders: In $var steht „1.2345“, und ich möchte dies als
„1,24“ ausgeben lassen, ohne $var zu verändern.

Klar, mit Hilfsvariablen, RegEx und sprintf kein Problem. Aber
ich wünsche es mir etwas eleganter und kürzer :smile:

sprintf ist genau dafür gedacht.
Aus der Manpage:

 If "use locale" is in effect, the character used for the deci-
 mal point in formatted real numbers is affected by the
 LC\_NUMERIC locale. See perllocale.

Also:

perl -e 'use POSIX qw(locale\_h); setlocale(LC\_NUMERIC, "de\_DE.ISO8859-1");printf("%.2f\n", 1.2345);'
1,23

HTH,
Moritz

Hallo,

Wie kann ich eine Gleitkommazahl auf zwei Stellen nach dem
Punkt gerundet und mit „,“ statt mit „.“ als
Dezimaltrennzeichen ausgeben, ohne den Wert des Skalars,
welches diese Zahl enthält, dabei zu verändern?

Also:

use POSIX qw(locale_h);
setlocale(LC_NUMERIC, „de_DE.ISO8859-1“);

genau das hab ich gesucht. So kann ich mir die manuelle Umwandlung und Gefrickel mit Hilfsvariablen sparen. So langsam steige ich auch durch perldoc durch…

Danke,

Malte