Foros del Web » Programando para Internet » Javascript »

Controar decimales de un numero

Estas en el tema de Controar decimales de un numero en el foro de Javascript en Foros del Web. Hola me pueden decir como trasnformo el numero: 3.12354 en 3.12 , osea poder controlar los de decimales.... saludos Juampi...
  #1 (permalink)  
Antiguo 29/05/2003, 14:15
 
Fecha de Ingreso: diciembre-2001
Ubicación: Argentina
Mensajes: 132
Antigüedad: 22 años, 4 meses
Puntos: 0
Controar decimales de un numero

Hola me pueden decir como trasnformo el numero: 3.12354
en 3.12 , osea poder controlar los de decimales....

saludos
Juampi
  #2 (permalink)  
Antiguo 29/05/2003, 15:01
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Buenas,

La FAQ117 te explica cómo hacerlo.

Ahí va otra forma, por si te sirve

<script language="JavaScript">
numero = 3.12354
numero = numero.toString()
numero = new Number(numero.substring(0,numero.indexOf(".")+3))
alert(numero)
</script>



saludos
  #3 (permalink)  
Antiguo 29/05/2003, 17:59
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola juampi:

Otra forma es usando el métido toFixed()...

Ejemplo:
alert(Math.PI.toFixed(2));

Saludos
  #4 (permalink)  
Antiguo 29/05/2003, 18:03
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
¿Y cómo se le aplica a un valor?

Porque tal cual está da el error "El objeto no acepta esta propiedad o método"
  #5 (permalink)  
Antiguo 29/05/2003, 18:10
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola tunait:

Te adjunto la página que hice para probarlo (es de un viejo post):
Código PHP:
<html>
<
head>
<
head>
<
body >
<
h1>Dos decimales</h1>
convierte el valor numérico de la entrada a número con 2 decimales</p>
<
form name="dosdecimales">
entrada:
<
input type=text name=entrada ><br>
salida1 (toFixed(2)) :
<
input type=text name=salida1 ><br>
salida2 (salida 100 100 :
<
input type=text name=salida2 ><br>
<
input type=button name=actuar value="acción"
    
onclick="salida1.value = parseFloat(entrada.value).toFixed(2); 
    salida2.value = parseInt(parseFloat(entrada.value) * 100) / 100"
>
</
form>
</
body>
</
html
Tardé un poco, porque lo probé con opera y netscape y en todos funciona bien...

El ejemplo también muestra otro sistema para dos decimales, pero me parece que tiene que ver con el que está en la FAQ

Saludos
  #6 (permalink)  
Antiguo 29/05/2003, 18:33
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
OK, sigue diciendome lo mismo, pero veo que es porque el método toFixed() es a partir de IExplorer 5.5 en adelante. (sigo con la 5.0)

En Netscape 7.0 funciona ok

Es un buen método, no entiendo por qué no lo inventaron antes. (no lo conocía)


saludos
  #7 (permalink)  
Antiguo 29/05/2003, 20:28
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Hice un objeto que llamé "flotante", y redefiní toFixed, de manera que creo que te debe funcionar...

Código PHP:
<html>
<
head>
<
script>
function 
toFixed()    {
    var 
potencia =  Math.pow(10parseInt(toFixed.arguments[0]));
    if (
potencia.toFixed)
        return 
parseFloat(this.n).toFixed(parseInt(toFixed.arguments[0]));
    else    
        return 
parseInt(parseFloat(this.n) * potencia) / potencia;
}

function 
flotante(n)    {
    
this.toFixed toFixed;
    
this.n;
}
</script>
<head>
<body >
<h1>Dos decimales</h1>
convierte el valor numérico de la entrada a número con 2 decimales</p>
<form name="dosdecimales">
entrada:
<input type=text name=entrada ><br>
salida1 (toFixed(2)) :
<input type=text name=salida1 ><br>
salida2 (salida * 100 / 100 :
<input type=text name=salida2 ><br>
salida3 new flotante().toFixed()
<input type=text name=salida3 ><br>
<input type=button name=actuar value="acción"
    onclick="salida1.value = parseFloat(entrada.value).toFixed(2);
    salida2.value = parseInt(parseFloat(entrada.value) * 100) / 100;
    salida3.value = new flotante(entrada.value).toFixed(2);">
</form>
</body>
</html> 
Puedes comentarme si te funciona.

Saludos
  #8 (permalink)  
Antiguo 30/05/2003, 04:23
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Caricatos,

me sigue dando el mismo error "El objeto no acepta esta propiedad o método"

Aunque lo definas como función, no se puede luego usar esa función como si fuera un método.

De todas formas con tu propuesta he aprendido un método que no conocía (nunca lo ví en ningún manual ni referencia). Gracias por el dato.

saludos
  #9 (permalink)  
Antiguo 30/05/2003, 04:36
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Es una pena que no funcione

Yo lo probé también negando la condición (ya sabes, en el if le puse "!")... para ver los dos resultados, y me fue bien...
lástima no tener esa versión, pero, siempre está la versión de las FAQs.

Me alegra saber que al menos sirvió para que aprendieras algo.

Saludos
  #10 (permalink)  
Antiguo 30/05/2003, 08:36
Avatar de tilu  
Fecha de Ingreso: agosto-2002
Ubicación: u-l-d-m
Mensajes: 1.885
Antigüedad: 21 años, 8 meses
Puntos: 5
Hola Tunait

me alegra ver que has vuelto, nos has hecho mucha falta

Es bueno saber que contamos con genios como ustedes que pueden llevar una conversación de la que todos podemos aprender algo.

Pero me quedó una duda

Tu método de caricatos (hola ) no se soportado por IExplorer inferior al 5.5 ?? De ser así es una lástima, lo bueno es que contamos con una super moderadora que siempre está atenta para guiarnos !!!
__________________
"Casualidad es el juego favorito del destino", Tilu
  #11 (permalink)  
Antiguo 30/05/2003, 10:38
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola a todos.

Os dejo otro método para controlar el nº de decimales:
Código PHP:
<html>
<
head>
<
script>
Number.prototype.decimal = function (num) {
    
pot Math.pow(10,num);
    return 
parseInt(this pot) / pot;
}
function 
decimal(src) {
    
n=eval(document.getElementById(src).value);
    
alert(n.decimal(3)); //deja 3 decimales
}
</script>
</head>

<body>
<input type="text" id="numero" value="3.1415926">
<input type="button" onClick="decimal('numero')">
</body>
</html> 
Espero que resulte útil. Saludos,
  #12 (permalink)  
Antiguo 30/05/2003, 11:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola a todos:

Parece que hoy estamos con la vena didáctica... esperemos que siga así

Yo no me sabía esa forma de usar los prototipos (gracias JavierB )

Tilu: coincido contigo en eso de la super moderadora aunque a veces le demos motivos para que nos den una regañina ... por cierto, ahora que no anda KarlanKas por los "pasillos" (no me deja hacer reproches) te voy a dar un tirón de orejas por el otro post...

Bueno... otra vez en serio :

Hay una diferencia entre toFixed y el método de multiplicar y dividir por una potencia de 10, y es que toFixed aproxima el valor al "más próximo", o sea que 3.06, lo convierte en 3.1, y de la otra manera solo hace el truncado (3.0)...
No sé para que lo necesitará juampi (por cierto... ¿por dónde andas?), pero creo que agradecerá los datos que le estamos dando.

Saludos
  #13 (permalink)  
Antiguo 31/05/2003, 08:47
Avatar de tilu  
Fecha de Ingreso: agosto-2002
Ubicación: u-l-d-m
Mensajes: 1.885
Antigüedad: 21 años, 8 meses
Puntos: 5
Cita:
Mensaje Original por caricatos
Tilu: coincido contigo en eso de la super moderadora aunque a veces le demos motivos para que nos den una regañina ... por cierto, ahora que no anda KarlanKas por los "pasillos" (no me deja hacer reproches) te voy a dar un tirón de orejas por el otro post...
Somos muchos los que coincidimos en que contamos con una muy buena moderadora (hola Tunait ), en particular me ha ayudado muchas veces y no puedo dejar de decir que lo ha hecho de manera certera, no desconozco la labor de nuestro moderador KarlanKas (Hola abducido ) que también se esmera en ayudar a quienes lo necesiten, lo mismo que muchos usuarios como tú que brindan ayuda desinteresada a otros usuarios como yo.

Claro aprovecha que no está el defensor de los reprochados para tirarme mis orejitas... debo confesar que no me incomoda que me regañen por mis errores, pero siempre que me digan el porqué
__________________
"Casualidad es el juego favorito del destino", Tilu
  #14 (permalink)  
Antiguo 31/05/2003, 09:19
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
Mensaje Original por tilu
Hola Tunait

me alegra ver que has vuelto, nos has hecho mucha falta

Es bueno saber que contamos con genios como ustedes que pueden llevar una conversación de la que todos podemos aprender algo.

Pero me quedó una duda

Tu método de caricatos (hola ) no se soportado por IExplorer inferior al 5.5 ?? De ser así es una lástima, lo bueno es que contamos con una super moderadora que siempre está atenta para guiarnos !!!
tilu, qué cosas me dices! que pongo colorá! Gracias

respecto a lo del método, efectivamente funciona a partir de la versión 5.5 de IExplorer en adelante (de NS no vi el dato así que no sé)

La verdad es que lo de controlar la cantidad de decimales es algo muy buscado desde siempre. Por eso decía que no entiendo por què no lo inventaron antes.

Mientras hayan tantos usuarios usando versiones inferiores usaré otras formas, y personalmente me quedo con la que menos líneas de código necesite.

Última edición por tunait; 21/01/2009 a las 07:27
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 12:19.