Foros del Web » Programando para Internet » PHP »

Convertir nuemero a texto

Estas en el tema de Convertir nuemero a texto en el foro de PHP en Foros del Web. Que tal... con una nueva duda... tengo un valor numerico y quisiera saber si existe forma de convertirlo a texto por ejemplo... 1434 pesos = ...
  #1 (permalink)  
Antiguo 26/10/2008, 01:13
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Convertir nuemero a texto

Que tal... con una nueva duda...

tengo un valor numerico y quisiera saber si existe forma de convertirlo a texto por ejemplo...

1434 pesos = (Mil cuatrocientos treinta y cuatro pesos 00/100 M.N.)

hay alguna funcion en el sistema que haga esto
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #2 (permalink)  
Antiguo 26/10/2008, 01:42
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Convertir nuemero a texto

http://www.forosdelweb.com/848366-post124.html
__________________
Kame Kame AH
  #3 (permalink)  
Antiguo 26/10/2008, 10:19
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Convertir nuemero a texto

Gracias muy bueno eh... no crei ke exisitiera ese codigo ya echo.. jejeje...

una cosa... como lo uso suponiendo que mi numero esta en la variable...

$total

como lo puedo aplicar... no entendi muy bien
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #4 (permalink)  
Antiguo 26/10/2008, 10:21
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Convertir nuemero a texto

"la funcion que se usa es docenumeros($numero)

ojala les sirva...."

Eso dice el post. xd
__________________
Kame Kame AH
  #5 (permalink)  
Antiguo 26/10/2008, 10:22
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Convertir nuemero a texto

perdon Goku si lei todo y vi eso... pero no se como hacerlo
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #6 (permalink)  
Antiguo 26/10/2008, 10:23
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Convertir nuemero a texto

¿echo docenumeros($total), talvez?
  #7 (permalink)  
Antiguo 26/10/2008, 10:36
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Convertir nuemero a texto

Gracias por la paciencia, a veces me trabo con la escritura de las funciones...
...pregunta?

Si mi cantidad viene... 1500.00
como lo puedo hacer para que me escriba...
mil quinientos pesos 00/100
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #8 (permalink)  
Antiguo 26/10/2008, 11:01
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Convertir nuemero a texto

Ya hize mis primeras pruebas y si escribo una cantidad con decimales por ejemplo 345.50 el script solo me pone el texto de los 345 el .50 me lo ignora esto es bueno ahora lo que necesito es que me imprima en otro espacio solo el .50 osea que me vuelva a leer toda la cantidad y que me elimine todos los enteros
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #9 (permalink)  
Antiguo 26/10/2008, 11:17
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Convertir nuemero a texto

Habría que añadir una variable que tomase los decimales antes de pasar el número (entero) por todo el proceso, y añadiera ese decimal cuando el proceso anterior se completase. Pero aunque no es muy difícil sería incorporar algo de complejidad al código.

Aunque la verdad es que me parece un añadido necesario, porque ya sean pesos, dólares o euros, siempre se requiere trabajar con céntimos o centavos.
  #10 (permalink)  
Antiguo 26/10/2008, 12:59
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Convertir nuemero a texto

Hasta ahora he logrado esto...
Código PHP:
list($entero$decimal)=split('[/.-]',$_POST[total]);
echo 
$decimal 
$_POST[total] = 345.50

pero me esta imprimiendo esto

Array50

por que me sale el array
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #11 (permalink)  
Antiguo 26/10/2008, 14:00
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Convertir nuemero a texto

Este problema me ha resultado interesante, y he tratado de resolverlo por mi cuenta, como una práctica por motivación personal, y aunque voy poco a poco y me he encontrado con un problema que no sé cómo resolver la parte que comentas ya la resolví con esto:
trabajando en localhost creo un fichero llamado cifra.php con este código
Código:
<?php 
if(isset($_GET['cifra']) && !empty($_GET['cifra']) && isset($_GET['moneda']) && !empty($_GET['moneda'])){
	$cifra = $_GET['cifra'];
	$moneda = $_GET['moneda'];

	function desglosar($cifra,$moneda){
		preg_match_all("/[0-9]/", $cifra, $digitos);
		echo "cifra: $cifra moneda: $moneda<br>";
		//compruebo si la cifra tiene parte decimal o no
                $decimal = explode(".",$cifra);
		if(($cifra - $decimal[0]) != 0){
			$entero = $decimal[0];
			$cent=$decimal[1];
			echo "$entero $moneda con $cent centimos <br>";
		}
		else{
			$entero = $cifra;
			echo "$entero $moneda <br>";
			echo "sin céntimos<br>";
 		}
	}
	desglosar($cifra,$moneda);
}
else{
	echo "Inserte cifra y moneda a través del método GET";
}
?>
Ejecuto en el navegador esto: http://localhost/cifra.php?cifra=12345.67&moneda=pesos

Esta parte funciona, y otras que no he copiado aquí funcionan en parte, pero tendría que corregirlo y no sé si tendré tiempo y ganas de hacerlo. Si lo hago lo pondré por aquí.

Saludos.
  #12 (permalink)  
Antiguo 26/10/2008, 14:41
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Convertir nuemero a texto

Si me permites, yo cambiaba la función desglosar que has detallado:

Código PHP:
function desglosar($cifra,$moneda){
    
preg_match_all("/[0-9]/"$cifra$digitos);
    echo 
"cifra: $cifra moneda: $moneda<br>";
    
//compruebo si la cifra tiene parte decimal o no
    
$decimal explode(".",$cifra);
    if((
$cifra $decimal[0]) != 0){
        
$entero $decimal[0];
        
$cent=$decimal[1];
        echo 
"$entero $moneda con $cent centimos <br>";
    }
    else{
        
$entero $cifra;
        echo 
"$entero $moneda <br>";
        echo 
"sin céntimos<br>";
    }

Por esta otra, que hace lo mismo pero es mucho más "breve":

Código PHP:
function desglosar$cifra$moneda ) {

        
$patron  "/^(\d+).?(\d*)$/";
        
$entero  preg_replace$patron"$1"$cifra );
        
$decimal preg_replace$patron"$2"$cifra );

        echo 
"$entero $moneda ".($decimal "con $decimal centimos" "sin céntimos")."<br>";

Un saludo!
  #13 (permalink)  
Antiguo 26/10/2008, 14:52
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Convertir nuemero a texto

Más breve y más profesional

Pero es que luego trabajo con la parte entera y la parte decimal, para posteriormente pasar los números a texto, y como mis conocimientos de PHP son limitados pues he hecho lo que he sabido. Pero sin duda la sintaxis que has usado es mucho mejor, aunque no comprendo qué significa. No sé "traducirla", vamos: $patron = "/^(\d+).?(\d*)$/";
  #14 (permalink)  
Antiguo 18/11/2008, 15:26
 
Fecha de Ingreso: octubre-2008
Mensajes: 25
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Convertir nuemero a texto

Por si a alguien le interesa la funcion con Centavos y en Moneda Nacional Mexico!!!

Código PHP:
<?
$numerodec
=12563.25;
$numeros =    array("-""UNO""DOS""TRES""CUATRO""CINCO""SEIS""SIETE""OCHO""NUEVE");
$numerosX =   array("-""UN""DOS""TRES""CUATRO""CINCO""SEIS""SIETE""OCHO""NUEVE");
$numeros100 = array("-""CIENTO""DOSCIENTOS""TRESCIENTOS""CUATROCIENTOS""QUINIENTOS""SEISCIENTOS""SETECIENTOS""OCHOCIENTOS""NOVECIENTOS");
$numeros11 =  array("-""ONCE""DOCE""TRECE""CATORCE""QUINCE""DIECISEIS""DIECISIETE""DIECIOCHO""DIECINUEVE");
$numeros10 =  array("-""-""-""TREINTA""CUARENTA""CINCUENTA""SESENTA""SETENTA""OCHENTA""NOVENTA");


function 
tresnumeros($n$last) {
 global 
$numeros100$numeros10$numeros11$numeros$numerosX;
  if (
$n == 100) return "CIEN ";
  if (
$n == 0) return "CERO ";
  
$r "";
  
$cen floor($n 100);
  
$dec floor(($n &#37; 100) / 10);
  
$uni $n 10;
if (
$cen 0$r .= $numeros100[$cen] . " ";

            switch (
$dec) {
                case 
0$special 0; break;
                case 
1$special 10; break;
                case 
2$special 20; break;
                default: 
$r .= $numeros10[$dec] . " "$special 30; break;
            }
            if (
$uni == 0) {
                if (
$special==30);
                else if (
$special==20$r .= "VEINTE ";
                else if (
$special==10$r .= "DIEZ ";
                else if (
$special==0);
            } else {
                if (
$special == 30 && !$last$r .= "Y " $numerosX[$n%10] . " ";
                else if (
$special == 30$r .= "Y " $numeros[$n%10] . " ";
                else if (
$special == 20) {
                    if (
$uni == 3$r .= "VEINTITRES ";
                    else if (!
$last$r .= "VEINTI" $numerosX[$n%10] . " ";
                    else 
$r .= "VEINTI" $numeros[$n%10] . " ";
                } else if (
$special == 10$r .= $numeros11[$n%10] . " ";
                else if (
$special == && !$last$r .= $numerosX[$n%10] . " ";
                else if (
$special == 0$r .= $numeros[$n%10] . " ";
            }
            return 
$r;
        }

        function 
seisnumeros($n$last) {
            if (
$n == 0) return "CERO ";
            
$miles floor($n 1000);
            
$units $n 1000;
            
$r "";
            if (
$miles == 1$r .= "MIL ";
            else if (
$miles 1$r .= tresnumeros($milesfalse) . "MIL ";
            if (
$units 0$r .= tresnumeros($units$last);
            return 
$r;
        }

        function 
docenumeros($n) {
            if (
$n == 0) return "CERO ";
            
$millo floor($n 1000000);
            
$units $n 1000000;
            
$r "";
            if (
$millo == 1$r .= "UN MILLON ";
            else if (
$millo 1$r .= seisnumeros($millofalse) . "MILLONES ";
            if (
$units 0$r .= seisnumeros($unitstrue);
            return 
$r;
        }  
        
        function 
desglosar$numerodec ) {
        
$patron  ".";
        
$posicion strpos($numerodec,$patron);
        
$decimalessubstr($numerodec,$posicion ,2);
        if (
strstr($numerodec,$patron))
         return 
"PESOS $decimales/100 M.N.";
         else
         return 
"PESOS CON 00/100 M.N.";
         
        } 
        echo 
docenumeros$numerodec );
        echo 
desglosar$numerodec );
?>
Devuelve:
DOCE MIL QUINIENTOS SESENTA Y TRES PESOS 25/100 M.N.

Saludos, si ven algo mal, avisenme


Obvio que el numero ya debe llegar redondeado a 2 decimales :)
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 23:04.