Foros del Web » Programando para Internet » PHP »

Error en mi funcion

Estas en el tema de Error en mi funcion en el foro de PHP en Foros del Web. Hola a todos tengo esta funcion para convertir numeros a letras y funciona bien solo que en los miles por ejemplo 3000 estoy teniendo problemas... ...
  #1 (permalink)  
Antiguo 30/01/2014, 12:25
 
Fecha de Ingreso: enero-2014
Mensajes: 4
Antigüedad: 10 años, 3 meses
Puntos: 0
Error en mi funcion

Hola a todos tengo esta funcion para convertir numeros a letras y funciona bien solo que en los miles por ejemplo 3000 estoy teniendo problemas... posteo mi codigo esperando vuestra ayuda ... gracias

[PHP]<?php function centimos()
{
global $importe_parcial;

$importe_parcial = number_format($importe_parcial, 2, ".", "") * 100;

if ($importe_parcial > 0)
$num_letra = " punto ".decena_centimos($importe_parcial);
else
$num_letra = "";

return $num_letra;
}

function unidad_centimos($numero)
{
switch ($numero)
{
case 9:
{
$num_letra = "nueve.";
break;
}
case 8:
{
$num_letra = "ocho.";
break;
}
case 7:
{
$num_letra = "siete.";
break;
}
case 6:
{
$num_letra = "seis.";
break;
}
case 5:
{
$num_letra = "cinco.";
break;
}
case 4:
{
$num_letra = "cuatro.";
break;
}
case 3:
{
$num_letra = "tres.";
break;
}
case 2:
{
$num_letra = "dos.";
break;
}
case 1:
{
$num_letra = "uno.";
break;
}
}
return $num_letra;
}

function decena_centimos($numero)
{
if ($numero >= 10)
{
if ($numero >= 90 && $numero <= 99)
{
if ($numero == 90)
return "noventa.";
else if ($numero == 91)
return "noventa y uno.";
else
return "noventa y ".unidad_centimos($numero - 90);
}
if ($numero >= 80 && $numero <= 89)
{
if ($numero == 80)
return "ochenta.";
else if ($numero == 81)
return "ochenta y uno.";
else
return "ochenta y ".unidad_centimos($numero - 80);
}
if ($numero >= 70 && $numero <= 79)
{
if ($numero == 70)
return "setenta.";
else if ($numero == 71)
return "setenta y uno.";
else
return "setenta y ".unidad_centimos($numero - 70);
}
if ($numero >= 60 && $numero <= 69)
{
if ($numero == 60)
return "sesenta.";
else if ($numero == 61)
return "sesenta y uno.";
else
return "sesenta y ".unidad_centimos($numero - 60);
}
if ($numero >= 50 && $numero <= 59)
{
if ($numero == 50)
return "cincuenta.";
else if ($numero == 51)
return "cincuenta y uno.";
else
return "cincuenta y ".unidad_centimos($numero - 50);
}
if ($numero >= 40 && $numero <= 49)
{
if ($numero == 40)
return "cuarenta.";
else if ($numero == 41)
return "cuarenta y uno.";
else
return "cuarenta y ".unidad_centimos($numero - 40);
}
if ($numero >= 30 && $numero <= 39)
{
if ($numero == 30)
return "treinta.";
else if ($numero == 91)
return "treinta y uno.";
else
return "treinta y ".unidad_centimos($numero - 30);
}
if ($numero >= 20 && $numero <= 29)
{
if ($numero == 20)
return "veinte.";
else if ($numero == 21)
return "veintiuno.";
else
return "veinti".unidad_centimos($numero - 20);
}
if ($numero >= 10 && $numero <= 19)
{
if ($numero == 10)
return "diez.";
else if ($numero == 11)
return "once.";
else if ($numero == 11)
return "doce.";
else if ($numero == 11)
return "trece.";
else if ($numero == 11)
return "catorce.";
else if ($numero == 11)
return "quince.";
else if ($numero == 11)
return "dieciseis.";
else if ($numero == 11)
return "diecisiete.";
else if ($numero == 11)
return "dieciocho.";
else if ($numero == 11)
return "diecinueve.";
}
}
else
return unidad_centimos($numero);
}

function unidad($numero)
{
switch ($numero)
{
case 9:
{
$num = "nueve";
break;
}
case 8:
{
$num = "ocho";
break;
}
case 7:
{
$num = "siete";
break;
}
case 6:
{
$num = "seis";
break;
}
case 5:
{
$num = "cinco";
break;
}
case 4:
{
$num = "cuatro";
break;
}
case 3:
{
$num = "tres";
break;
}
case 2:
{
$num = "dos";
break;
}
case 1:
{
$num = "uno";
break;
}
}
return $num;
}

function decena($numero)
{
if ($numero >= 90 && $numero <= 99)
{
$num_letra = "noventa";

if ($numero > 90)
$num_letra = $num_letra."y ".unidad($numero - 90);
}
else if ($numero >= 80 && $numero <= 89)
{
$num_letra = "ochenta";

if ($numero > 80)
$num_letra = $num_letra."y ".unidad($numero - 80);
}
else if ($numero >= 70 && $numero <= 79)
{
$num_letra = "setenta";

if ($numero > 70)
$num_letra = $num_letra."y ".unidad($numero - 70);
}
else if ($numero >= 60 && $numero <= 69)
{
$num_letra = "sesenta";

if ($numero > 60)
$num_letra = $num_letra."y ".unidad($numero - 60);
}
else if ($numero >= 50 && $numero <= 59)
{
$num_letra = "cincuenta";

if ($numero > 50)
$num_letra = $num_letra."y ".unidad($numero - 50);
}
else if ($numero >= 40 && $numero <= 49)
{
$num_letra = "cuarenta";

if ($numero > 40)
$num_letra = $num_letra."y ".unidad($numero - 40);
}
else if ($numero >= 30 && $numero <= 39)
{
$num_letra = "treinta";

if ($numero > 30)
$num_letra = $num_letra."y ".unidad($numero - 30);
}
else if ($numero >= 20 && $numero <= 29)
{
if ($numero == 20)
$num_letra = "veinte";
else
$num_letra = "veinti".unidad($numero - 20);
}
else if ($numero >= 10 && $numero <= 19)
{
switch ($numero)
{
case 10:
{
$num_letra = "diez";
break;
}
case 11:
{
$num_letra = "once";
break;
}
case 12:
{
$num_letra = "doce";
break;
}
case 13:
{
$num_letra = "trece";
break;
}
case 14:
{
$num_letra = "catorce";
break;
}
case 15:
{
$num_letra = "quince";
break;
}
case 16:
{
$num_letra = "dieciseis";
break;
}
case 17:
{
$num_letra = "diecisiete";
break;
}
case 18:
{
$num_letra = "dieciocho";
break;
}
case 19:
{
$num_letra = "diecinueve";
break;
}
}
}
else
$num_letra = unidad($numero);

return $num_letra;
}

function centena($numero)
{
if ($numero >= 100)
{
if ($numero >= 900 & $numero <= 999)
{
$num_letra = "novecientos ";

if ($numero > 900)
$num_letra = $num_letra.decena($numero - 900);
}
else if ($numero >= 800 && $numero <= 899)
{
$num_letra = "ochocientos ";

if ($numero > 800)
$num_letra = $num_letra.decena($numero - 800);
}
else if ($numero >= 700 && $numero <= 799)
{
$num_letra = "setecientos ";

if ($numero > 700)
$num_letra = $num_letra.decena($numero - 700);
}
else if ($numero >= 600 && $numero <= 699)
{
$num_letra = "seiscientos ";

if ($numero > 600)
$num_letra = $num_letra.decena($numero - 600);
}
else if ($numero >= 500 && $numero <= 599)
{
$num_letra = "quinientos ";

if ($numero > 500)
$num_letra = $num_letra.decena($numero - 500);
}
else if ($numero >= 400 && $numero <= 499)
{
$num_letra = "cuatrocientos ";

if ($numero > 400)
$num_letra = $num_letra.decena($numero - 400);
}
else if ($numero >= 300 && $numero <= 399)
{
$num_letra = "trescientos ";

if ($numero > 300)
$num_letra = $num_letra.decena($numero - 300);
}
else if ($numero >= 200 && $numero <= 299)
{
$num_letra = "doscientos ";

if ($numero > 200)
$num_letra = $num_letra.decena($numero - 200);
}
else if ($numero >= 100 && $numero <= 199)
{
if ($numero == 100)
$num_letra = "cien ";
else
$num_letra = "ciento ".decena($numero - 100);
}
}
else
$num_letra = decena($numero);

return $num_letra;
}

function cien()
{
global $importe_parcial;

$parcial = 0; $car = 0;

while (substr($importe_parcial, 0, 1) == 0)
$importe_parcial = substr($importe_parcial, 1, strlen($importe_parcial) - 1);

if ($importe_parcial >= 1 && $importe_parcial <= 9.99)
$car = 1;
else if ($importe_parcial >= 10 && $importe_parcial <= 99.99)
$car = 2;
else if ($importe_parcial >= 100 && $importe_parcial <= 999.99)
$car = 3;

$parcial = substr($importe_parcial, 0, $car);
$importe_parcial = substr($importe_parcial, $car);

$num_letra = centena($parcial).centimos();

return $num_letra;
}
  #2 (permalink)  
Antiguo 30/01/2014, 12:28
 
Fecha de Ingreso: enero-2014
Mensajes: 4
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Error en mi funcion

Continua

function cien_mil()
{
global $importe_parcial;

$parcial = 0; $car = 0;

while (substr($importe_parcial, 0, 1) == 0)
$importe_parcial = substr($importe_parcial, 1, strlen($importe_parcial) - 1);

if ($importe_parcial >= 1000 && $importe_parcial <= 9999.99)
$car = 1;
else if ($importe_parcial >= 10000 && $importe_parcial <= 99999.99)
$car = 2;
else if ($importe_parcial >= 100000 && $importe_parcial <= 999999.99)
$car = 3;

$parcial = substr($importe_parcial, 0, $car);
$importe_parcial = substr($importe_parcial, $car);

if ($parcial > 0)
{
if ($parcial == 1)
$num_letra = "mil ";
else
$num_letra = centena($parcial)." mil ";
}

return $num_letra;
}


function millon()
{
global $importe_parcial;

$parcial = 0; $car = 0;

while (substr($importe_parcial, 0, 1) == 0)
$importe_parcial = substr($importe_parcial, 1, strlen($importe_parcial) - 1);

if ($importe_parcial >= 1000000 && $importe_parcial <= 9999999.99)
$car = 1;
else if ($importe_parcial >= 10000000 && $importe_parcial <= 99999999.99)
$car = 2;
else if ($importe_parcial >= 100000000 && $importe_parcial <= 999999999.99)
$car = 3;

$parcial = substr($importe_parcial, 0, $car);
$importe_parcial = substr($importe_parcial, $car);

if ($parcial == 1)
$num_letras = "un millón ";
else
$num_letras = centena($parcial)." millones ";

return $num_letras;
}

function puntovertir_a_letras($numero)
{
global $importe_parcial;

$importe_parcial = $numero;

if ($numero < 1000000000)
{
if ($numero >= 1000000 && $numero <= 999999999.99)
$num_letras = millon().cien_mil().cien();
else if ($numero >= 1000 && $numero <= 999999.99)
$num_letras = cien_mil().cien();
else if ($numero >= 1 && $numero <= 999.99)
$num_letras = cien();
else if ($numero >= 0.01 && $numero <= 0.99)
{
if ($numero == 0.01)
$num_letras = "un céntimo";
else
$num_letras = puntovertir_a_letras(($numero * 100)."/100")." .";
}
}
return $num_letras;
}
?>
  #3 (permalink)  
Antiguo 30/01/2014, 12:30
 
Fecha de Ingreso: enero-2014
Mensajes: 4
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Error en mi funcion

Como les decia funciona en todos menos en los miles
  #4 (permalink)  
Antiguo 30/01/2014, 12:32
 
Fecha de Ingreso: enero-2014
Mensajes: 4
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Error en mi funcion

la funcion completa esta aca http://www.lawebdelprogramador.com/codigo/PHP/176-Convertir_numeros_a_letras.html

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:12.