Henrik: numerische notationen in Perl

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

  1. 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

    1. 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

      1. 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

        1. Hallo Beate,

          $x = <STDIN>;
          $x = int ($x * 100) / 100;
          printf ("%.2f", $x);

          Vielen Dank, das geht ja einwandfrei!

          Viele Grüße, Rolf

  2. 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

  3. 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);

    Gibt Float-Zahlen mit 2 Nachkommastellen aus.

    printf ("Ausgabe: %.2e", $Zahl);

    Gibt Zahlen im e-Format mit 2 Nachkommastellen aus.

    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