Nach Addition wird die letzte 0 ignoriert
Thomas Kallwass
- perl
Hallo
Ich habe da ein kleines Problem, bei dem ich nicht wuesste, wonach ich suchen soll.
Per Formular werden Zahlenwerte wie 4 oder 1,20 an das Script uebergeben. Das Script soll diese Werte dann addieren und ausgeben.
Problem 1: Man muss die gebrochenen Zahlen (also 1,2 u.a.) mit einem Punkt eingeben, ansonsten werden sie ignoriert. Da habe ich mittlerweile herausbekommen, dass es am amerikanischen Ursprung Perls liegt. In Amerika nutzen die eben Punkte statt Kommata. Nuetzt mir aber wenig, da ich auf dem Zahlenblock nur ein Komma, keinen Punkt habe. Kann man das Problem irgendwie umgehen?
Problem 2: Wenn die Zahlen addiert wurden, also z.B. 1,20 + 4, dann gibt das Script 4,2 aus. Da das jedoch Waehrungen sind, sollte da 4,20(DM) stehen. 4,2 ist doch etwas ungewohnt. Wie kriege ich da ne 0 hinter?
Einfach
print "bla".$preis."0DM";
geht nicht, da ja manchmal auch gerade Zahlen herauskommen. Und dann stuende da 40, statt 4(DM).
Waere schoen, wenn mir da einer helfen koennte.
MfG
Thomas
Moin,
Problem 1: Man muss die gebrochenen Zahlen (also 1,2 u.a.) mit einem Punkt eingeben, ansonsten werden sie ignoriert. Da habe ich mittlerweile herausbekommen, dass es am amerikanischen Ursprung Perls liegt. In Amerika nutzen die eben Punkte statt Kommata. Nuetzt mir aber wenig, da ich auf dem Zahlenblock nur ein Komma, keinen Punkt habe. Kann man das Problem irgendwie umgehen?
my $zahl='1,2';
$zahl =~ y/,/./; # ersetze , durch .
Problem 2: Wenn die Zahlen addiert wurden, also z.B. 1,20 + 4, dann gibt das Script 4,2 aus. Da das jedoch Waehrungen sind, sollte da 4,20(DM) stehen. 4,2 ist doch etwas ungewohnt. Wie kriege ich da ne 0 hinter?
my $x = '1,20';
my $y = '4';
$x =~ y/,/./;
$y =~ y/,/./;
($sum = sprintf '%.2f' => $x+$y) =~ y/./,/;
print $sum;
sprintf stammt aus der C-Welt, die Perldoku schweigt sich ueber den Formatstring (hier '%.2f') etwas aus, fuer naeheres Interesse muesstest du mal eine C-Doku konsultieren.
Die Ausgabe erfolgt in meinem Beispiel wieder mit ','.
Viele Gruesse,
n.d.p.
Hallo
Vielen Dank, es laeuft jetzt einwandfrei.
MfG
Thomas