viernes, 19 de mayo de 2017

Conversión de números a texto

Hace bastante tiempo necesité un conversor para representar un importe en euros en texto; principalmente para imprimir importes de cheques, recibos, etc.

Como no encontré ninguno que se adaptara a lo que necesitaba, partiendo de uno que tenía hecho en C, lo hice en C#.

Luego decidí "traducirlo" a PHP. Partiendo de .NET es relativamente sencillo, ya que básicamente se trata de analizar un número y traducirlo.

Tienes las dos versiones disponibles en GitHub y en PHP Classes.

Se trata de una sola clase con un método estático que realiza la conversión.

Su uso es muy sencillo:

C#

string txt1 = Alp3476.A2Num2Txt.ToString("3528.25");
Console.WriteLine(txt1);
// tres mil quinientos veintiocho con veinticinco

string txt2 = Alp3476.A2Num2Txt.ToString(123456);
Console.WriteLine(txt2);
// ciento veintitres mil cuatrocientos cincuenta y seis

En la versión de C#, el método está sobrecargado, por lo que admite como parámetro un double, o un string.

PHP

include 'Num2Txt.php';

$o = new  \Alp3476\Num2Txt();
echo $o->toString(3527.25) . PHP_EOL;
// tres mil quinientos veintisiete con veinticinco

echo $o->toString(12342245281.890) . PHP_EOL;
// doce mil trescientos cuarenta y dos millones doscientos cuarenta y cinco mil ...
// ... doscientos ochenta y uno con ochenta y nueve

En PHP, el parámetro se convierte a float utilizando floatval(), por lo que admite cualquier parámetro que se pueda convertir a un número de punto flotante.

Los números se redondean a dos dígitos.
Como he comentado, su uso inicial es para imprimir importes en euros (de ahí que se utlicen dos decimales)


Por supuesto que hay muchas clases similares y seguramente más optimizadas, pero si crees que te pueden servir, ahí las tienes.

Son muy sencillas y las podrás adaptar a tus necesidades.



No hay comentarios:

Publicar un comentario

Coalesce C#

En programación es bastante común que se compruebe si una variable "tiene valor" y si es así, se utiliza, y en caso contrario se u...