Eidgenosse: INT-Funktion

Hallo liebes Forum,

mein Versuch, eine einfache Rechenoperation durchzuführen scheitert leider an der int-Funktion unter Perl. Vielleicht hat jemand von Euch eine Erklärung für das Verhalten. Ich versuche folgendes:

$a='9,28';
print "$a\n";   # ergibt "9,28"
$a=~tr/,/./;
print "$a\n";   # ergibt "9.28"
$a=int($a*100);
print "$a\n";   # ergibt "927" <= ???

Vielen Dank im Voraus für Eure Hilfe!

Eidgenosse

  1. Halihallo Eidgenosse

    mein Versuch, eine einfache Rechenoperation durchzuführen scheitert leider an der int-Funktion unter Perl.

    sogar

    use POSIX qw(floor);

    floor($a*100);

    spielt verrückt, lauf "perldoc -f int" sind die POSIX-Funktionen zuverlässiger.

    Vielleicht hat jemand von Euch eine Erklärung für das Verhalten.

    Absolut nicht. Faszinierend!

    $a='9,28';

    bei $a='5,28' z.B. funktioniert es. Bei $a='90,28' auch. Nur der neuner und z.B. der
    achter schlagen fehl.

    Ich habe dafür keine Erklärung.

    Ich arbeite mit ActiveState perl5.8, WinXP. Hatte dies jemand mit perl5.6 oder Unix
    versucht? - Fehler in der POSIX-Emu von ActiveState?

    Viele Grüsse

    Philipp

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
    1. Hallo Philipp,

      vielen Dank für Deine Antwort. Ich glaube nun, dass es sich um ein Problem bei der Binärdarstellung der Zahl 9,28 handelt. Vermutlich wird sie durch etwas wie 9,27999999999999999 aproximiert.

      Viele Grüße

      Eidgenosse

      1. hi,

        vielen Dank für Deine Antwort. Ich glaube nun, dass es sich um ein Problem bei der Binärdarstellung der Zahl 9,28 handelt. Vermutlich wird sie durch etwas wie 9,27999999999999999 aproximiert.

        also wenn ich die perldoc richtig verstanden habe ist das so:

        For example, "int(-6.725/0.025)"
                    produces -268 rather than the correct -269; that's because it's
                    really more like -268.99999999999994315658 instead.

        (perldoc -f int)

        Viele Grüße, Rolf

        --
        SELFforum - Das Tor zur Welt!
        Theoretiker: Wie kommt das Kupfer in die Leitung?
        Praktiker: Wie lege ich die Leitung von A nach B?
      2. Halihallo Eidgenosse

        vielen Dank für Deine Antwort. Ich glaube nun, dass es sich um ein Problem bei der Binärdarstellung der Zahl 9,28 handelt. Vermutlich wird sie durch etwas wie 9,27999999999999999 aproximiert.

        Wie dumm von mir, das 1x1 der Computer-Zahlentheorie :-(
        *schäm*

        Viele Grüsse

        Philipp

        --
        RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
        Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.