Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5736[/thread]

1000er Trennzeichen in Zahlen

Leser: 1


<< >> 5 Einträge, 1 Seite
[HR]Doomrunner
 2003-09-18 14:14
#53737 #53737
User since
2003-09-04
77 Artikel
BenutzerIn
[default_avatar]
Hi,

wie bekomme ich es jetzt noch hin, dass ich in meiner formatierten Zahl noch die Tausender-Trennzeichen reinbekomme?

Z.B. 10000000,00 = 10.000.000,00 ?
havi
 2003-09-18 15:26
#53738 #53738
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Hier die einzelnen Schritte zur Lösung!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use warnings;
use strict;

my $zahl = "10000000,00";

$zahl = reverse $zahl;

$zahl =~ s%(\d{3})%$1\.%g;

$zahl = reverse $zahl;

print $zahl;

1;


Gruss
Crian
 2003-09-18 15:29
#53739 #53739
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich nehme dazu immer diese Funktion:

Code: (dl )
1
2
3
4
5
6
sub taupu($) {
my $text = reverse $_[0];
$text =~ s:\.:,:g; # deutsches Komma als Dezimaltrenner
$text =~ s/(\d\d\d)(?=\d)(?!\d*,)/$1./g;
return scalar reverse $text;
} # sub taupu
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
[HR]Doomrunner
 2003-09-18 18:29
#53740 #53740
User since
2003-09-04
77 Artikel
BenutzerIn
[default_avatar]
Alles klar. Hat funktioniert.

Die Sache hatte nur noch einen kleinen Schönheitsfehler. Wenn die Zahl nämlich z.B. 6-stellig war, so war noch ein Punkt vor der Zahl.

Habe das ganze dann aber herausgefiltert:

Code (perl): (dl )
1
2
3
4
$price = reverse $price;
$price =~ s%(\d{3})%$1\.%g;
$price = reverse $price;
if(substr($price,0,1) eq ".") { $price = substr($price,1); }
Crian
 2003-09-18 19:08
#53741 #53741
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Nimm meine Funktion :-) Das ist eine abgewandelte (an deutsche Verhältnisse angepasste) Variante des Codes aus dem Perl-Kochbuch. Der funktioniert z.B. auch mit nachkommastellenhaltigen Zahlen, ist viel getestet und robust :-)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 5 Einträge, 1 Seite



View all threads created 2003-09-18 14:14.