Pregunta de perl

Ernesto Hernandez-Novich emhn at telcel.net.ve
Mon Apr 16 19:54:24 CDT 2001


On Mon, 16 Apr 2001, Salvador Spataro wrote:
> quisiera saber si existe forma (me imagino que si) de darle formato a los
> numeros para que se vean con dos decimales y separadores de miles ¿?
> 
> 23334.34433553
> 
> a
> 23.334,34
> 
> gracias de antemano

Puedes poner los decimales con sprintf o haciendo uso de un formato

#!/usr/bin/perl
$n = 2334.34433553;
$x = sprintf "%8.2f",$n;

print "$x\n";

format =
@#######.##
$n
.

No existe ninguna condición de formato que permita poner las "," en
Perl. Y la razón es obvia si uno ha trabajado lo suficiente con i18n,
pero no viene al caso. Lo que puedes hacer es usar una expresión
regular para ponerle las comas al número justo antes de imprimirlo;
lo que a mi me gusta hacer es tener una función que hace precisamente
eso:

- Hago las posiciones decimales con sprintf o int.
- Pongo las comas.

#!/usr/bin/perl

sub FormatNumber {
  my ($n,$d) = @_;
  if ($d > 0) {
    $n = sprintf("%.${d}f",$n);
  } else {
    $n = int($n+0.5);
  }
  1 while ($n =~ s/(\d)(\d\d\d)(?!\d)/$1,$2/g);
  return $n;
}

print FormatNumber(2334.34433553,2), "\n";
-- 
Ernesto Hernández-Novich - Running Linux 2.2.18 i686 - Unix: Live free or die!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d+(-) s+: a C+++$ UBLAVHIOSC++++$ P++++$ L+++$ E- W+ N++ ?o ?K w--- O- M- V
PS+ PE Y+ PGP>++ t+ 5 X+ R* tv+ b++ DI+++$ D++ G>++ e++ h+ r+ y++
-----END GEEK CODE BLOCK-----

------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------



More information about the caracas-pm mailing list