Hallo,
ich suche eine Routine, mit der ich eine beliebige Zahl - mal mit mal ohne Dezimalstellen - mit Tausenderpunkten versehen kann.
Danke und Gruss
Claus
User since
2006-07-18
2
Artikel
BenutzerIn
danke, habe alle Variationen probiert, klappt bei Ganzzahlen auch ganz gut. Bei Dezimalzahlen allerdings, die aus meiner Datenbank kommt, wird kein Komma gesetzt, sondern ein Punkt, z.B. so 12.345.89 statt 12.235,89. Auch werden die Nullen der Dezimalstellen abgeschnitten, 123.5 statt 123,50
Gruss
city
User since
2006-07-18
2
Artikel
BenutzerIn
korrigiere mich:
die dritte Variante (subroutine taupi) setzt als einizige das Komma statt des Punkts bei den Dezimalzahlen.
Lediglich Dezimalnullen werden abgeschnitten.
Hilft mir aber schon viel weiter.
Vielen Dank
User since
2003-08-04
14371
Artikel
ModeratorIn
Um später die 0 zu haben, kannst Du ja
sprintf verwenden...
User since
2003-08-04
7321
Artikel
ModeratorIn
[quote=renee,18.07.2006, 22:31]Um später die 0 zu haben, kannst Du ja sprintf verwenden...[/quote]
wie macht er das? die zahl ist ja keine zahl mehr, sondern ein string! oder nicht?
(nicht getestet, sondern nur laut gedacht)
User since
2003-08-04
7321
Artikel
ModeratorIn
[quote=city2000,18.07.2006, 20:32]Lediglich Dezimalnullen werden abgeschnitten.[/quote]
nö
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#! /usr/bin/perl
use strict;
use warnings;
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
print taupu('109480238502985983509.670');
# 109.480.238.502.985.983.509,670\n\n
<!--EDIT|esskar|1153264170-->
User since
2003-08-04
14371
Artikel
ModeratorIn
[quote=esskar,19.07.2006, 00:59][quote=renee,18.07.2006, 22:31]Um später die 0 zu haben, kannst Du ja
sprintf verwenden...[/quote]
wie macht er das? die zahl ist ja keine zahl mehr, sondern ein string! oder nicht?
(nicht getestet, sondern nur laut gedacht)[/quote]
Sorry, ich war bei führenden Nullen...
User since
2003-08-04
5871
Artikel
ModeratorIn
Schön, dass mein taupi so zu Ehren kommt =)
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