numerische notationen in Perl
Henrik
- perl
0 Cheatah0 Rolf0 Beate Mielke0 Rolf
0 BAKKA0 Beate Mielke
Hi,
folgendes Problem. Ich möchte eine double variable ausgeben. Es sollen aber nur 2 Stellen
hinter dem Komma ausgegeben werden. Kann mir jemand helfen ?
Dank schonmal !
cu
Henrik
Hi,
folgendes Problem. Ich möchte eine double variable ausgeben. Es sollen aber nur 2 Stellen
hinter dem Komma ausgegeben werden. Kann mir jemand helfen ?
Perl kennt so etwas wie "Double" nicht, oder "Real", "Integer" etc. Es kennt nur "Skalar", was sowohl String als auch Zahl sein kann, egal von welchem Typ. Um nur zwei Nachkommastellen auszugeben, solltest Du Dich mit dem Befehl sprintf auseinandersetzen. Lies dazu am besten die bei Perl mitgelieferte Dokumentation: perldoc -f sprintf.
Cheatah
Hallo Cheatah,
sprintf() ist ok, mit dem folgenden Testscript werden genau 2 Stellen ausgegeben, bloß: wie verhindere ich das Runden?
---testsript---
$x = <STDIN>; # Eingabe mit Punkt
$s = sprintf ("%.2f", $x);
print $s;
---ende---
Viele Grüße, Rolf
Hallo Rolf,
sprintf() ist ok, mit dem folgenden Testscript werden genau 2 Stellen ausgegeben, bloß: wie verhindere ich das Runden?
---testsript---
$x = <STDIN>; # Eingabe mit Punkt
$s = sprintf ("%.2f", $x);
print $s;
---ende---
$x = <STDIN>;
$x = int ($x * 100) / 100;
printf ("%.2f", $x);
Viele Gruesse
Beate Mielke
Hallo Beate,
$x = <STDIN>;
$x = int ($x * 100) / 100;
printf ("%.2f", $x);
Vielen Dank, das geht ja einwandfrei!
Viele Grüße, Rolf
Hailo...
is zwar n bischen kompliziert und nicht sehr elegant, aber es funktioniert
$i=0.333333; #i ist deine zahl..
@erg=split(/./,$i);
@nachkomma=split(//,$erg[1]);
@ergebnis="$erg[0],.,$nachkomma[0],$nachkomma[1]";
$wert=join("",@ergebnis);
$wert=~s/,//g;
print $wert."\n";
Viel spass (oder glueck?)
BAKKA
Hallo Henrik;
folgendes Problem. Ich möchte eine double variable ausgeben. Es sollen aber nur 2 Stellen
hinter dem Komma ausgegeben werden. Kann mir jemand helfen ?
printf ("Ausgabe: %.2f\n", $Zahl);
printf ("Ausgabe: %.2e", $Zahl);
Angenommen folgende Zahl soll ausgegeben werden: 1234567890.125
im 1. Fall (f-Format) wird ausgegeben: 1234567890.13 (es wird gerundet)
im 2. Fall (e-Format) wird ausgegeben: 1.23e+009
Uebrigens habe ich festgestellt, daß Perl bei mir (unter Windows) im f-Format ab der 18. Stelle alles in Nullen umwandelt.
Viele Gruesse
Beate Mielke