Thread 123 -> 123.00 bzw. 1.2 -> 1.20 (19 answers)
Opened by Thomas at 2010-02-10 13:59

Gast Thomas
 2010-02-10 13:59
#132511 #132511
Hallo zusammen,

für einen Vergleich in einem Perl-Skript lese ich Zahlen (EUR-Werte) aus einem Textdokument aus, die ich aus der deutschen in die Perl-Schreibweise bringe (z.B. 12.345,67 in 12345.67). Das funktioniert auch wunderbar.
Jetzt berechne ich Summen aus diesen Zahlen und vergleiche diese wieder mit anderen, aus einer Datei eingelesenen Zahlen. Das Problem ist, dass die ausgelesenen Zahlen z.B. 234.00 lauten, die berechneten Werte aber 234 sind und der Vergleich damit fehlschlägt.
Ich versuche mich gerade an einer Funktion, die aus 234 dann 234.00 macht, aber irgendwas scheine ich falsch zu machen. Sieht jemand den Fehler in dieser Sub?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Zahlen der Form 12345 bzw. 77.9 in für Vergleich notwendige Schreibweise 12345.00 bzw. 77.90 umwandeln
sub toVolleZahl
{
        my $wert = $_[0];
        # ALLE " " (Leerzeichen) entfernen
        $wert =~ s/\s//g;
        # falls in der Form: (beliebig viele Zahlen von 0-9).(zwei Zahlen von 0-9) --> bereits richtig
        if ($wert =~ /\d*\.\d\d/)
        {
                return $wert;
        }
        # falls $wert gleich: (beliebig viele Zahlen von 0-9) kein Punkt
        elsif ($wert =~ /\d+^\./)
        {
                $wert .= ".00";
                return $wert;
        }
        # falls $wert gleich: (beliebig viele Zahlen von 0-9).(eine Zahl von 0-9)
        elsif ($wert =~ /\d+\.\d/)
        {
                $wert .= "0";
                return $wert;
        }
}


Danke!

View full thread 123 -> 123.00 bzw. 1.2 -> 1.20