Schrift
[thread]6064[/thread]

Tausendertrennzeichen in Perl

Leser: 3


<< >> 7 Einträge, 1 Seite
stb2050
 2004-02-08 21:09
#79952 #79952
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Ihr,

ich habe teilweise sehr große Zahlen

45435
4890375
45783975345
78957825675224

Diese zu lesen wird dann manchmal etwas kompliziert. Wie kann ich es anstellen, dass eine Zahl mit Tausendertrennzeichen formatiert wird?

Also wenn $zahl = "58958438", dass nachher $zahl = "58.958.438".

Weiß jemand Rat?

Viele Grüße & vielen Dank
Steffen
esskar
 2004-02-08 21:17
#79953 #79953
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
my $zahl = "23349876496739752037607647";
1 while $zahl =~ s/^(-?\d+)(\d{3})/$1.$2/;


sollte gehen...
ist aber nur zur darstellung und nicht mehr zur verarbeitung gedacht!
stb2050
 2004-02-08 21:20
#79954 #79954
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Du,

danke dir vielmals :-)

Funktioniert auf Anhieb.

Schönen Rest-Sonntag noch.

Viele Grüße
Steffen
Strat
 2004-02-08 23:52
#79955 #79955
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
oder bei integerzahlen ohne das 1 while (muesste schneller sein):
Code: (dl )
1
2
3
$zahl =~ s/(\d{1,3})
(?= (?:\d\d\d)+ (?!\d) )
/$1\./gx;


wenn es keine integer sind, sondern auch mit nachkomma, oder Minuszeichen:
Code: (dl )
1
2
3
$zahl =~ s/\G((?:^-)?\d{1,3})
(?= (?:\d\d\d)+ (?!\d) )
/$1\./gx;

(nicht getestet)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Ishka
 2004-02-09 00:16
#79956 #79956
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
btw (passt zwar nicht 100% zum Thema, aber ein bissal), du kannst Zahlen in Perl mit _ dazwischen schreiben, also zB:
$var=45_63_235;
Die werden dann einfach ignoriert
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
pq
 2004-02-09 01:07
#79957 #79957
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perldoc -q commas:
Quote
Found in /usr/local/lib/perl5/5.8.2/pod/perlfaq5.pod
      How can I output my numbers with commas added?
[...]
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Crian
 2004-02-09 14:16
#79958 #79958
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sub taupu ($) {
# -----------------------------------------------------------------------------
# sub : t a u p u
# -----------------------------------------------------------------------------
# Autor : CD
# Aufgabe : Zahlen mit Tausendertrenner (".") ausgeben und Komma als
# Dezimaltrenner verwenden.
# (Kopiert aus dem Perl-Cook-Book und angepasst.)
# Parameter : Auszugebende Zahl
# Rückgabewert : Zahl mit Punkten
# -----------------------------------------------------------------------------
# 0.0.1 - 10.12.2002 - CD - Erstellt
# -----------------------------------------------------------------------------

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
<< >> 7 Einträge, 1 Seite



View all threads created 2004-02-08 21:09.