Foros del Web » Programando para Internet » Javascript »

Limitar a 2 decimales resultados en un input

Estas en el tema de Limitar a 2 decimales resultados en un input en el foro de Javascript en Foros del Web. Hola a todos, Les cuento, tego un sistema de notas que saca el 20% de cada nota y al final suma los 5 resultados de ...
  #1 (permalink)  
Antiguo 08/12/2018, 12:38
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 373
Antigüedad: 10 años, 2 meses
Puntos: 1
Limitar a 2 decimales resultados en un input

Hola a todos, Les cuento, tego un sistema de notas que saca el 20% de cada nota y al final suma los 5 resultados de esos 20% en una nota definitiva. Ya lo hice y me funciona correctamente, pero tengo un problema y es que la definitiva y algunos de los 5 porcentajes me salen muchos decimales, y yo solo quiero usar 2, es decir, por ejemplo. El 20% de 3.0 es 0.6000000000000001 y yo quiero utilizar solo el (0.60) de ese resultado. igual al sumal todos esos valores me salen muchos decimales, alguien me podria ayudar para resolver esto, creo que es sencillo pero no he podido encontrar mucho sobre esto en la red.

Este es mi codigo Javascript utilizado:

<script>
function p(){
var num1 = parseFloat(document.getElementById('n1_ac').value) ;
var num2 = parseFloat(document.getElementById('n2_ac').value) ;
var num3 = parseFloat(document.getElementById('n1_ea').value) ;
var num4 = parseFloat(document.getElementById('n1_al').value) ;
var num5 = parseFloat(document.getElementById('n1_as').value) ;

var num6 = parseFloat(document.getElementById('p_n1_ac').valu e);
var num7 =parseFloat(document.getElementById('p_n2_ac').val ue);
var num8 = parseFloat(document.getElementById('p_n1_ea').valu e);
var num9 = parseFloat(document.getElementById('p_n1_al').valu e);
var num10 = parseFloat(document.getElementById('p_n1_as').valu e);




var p_n1_ac =(num1*0.20);
if(!isNaN(p_n1_ac))
document.getElementById("p_n1_ac").value = p_n1_ac;


var p_n2_ac =(num2*0.20);
if(!isNaN(p_n2_ac))
document.getElementById("p_n2_ac").value = p_n2_ac;


var p_n1_ea =(num3*0.20);
if(!isNaN(p_n1_ea))
document.getElementById("p_n1_ea").value = p_n1_ea;


var p_n1_al =(num4*0.20);
if(!isNaN(p_n1_al))
document.getElementById("p_n1_al").value = p_n1_al;

var p_n1_as =(num5*0.20);
if(!isNaN(p_n1_as))
document.getElementById("p_n1_as").value = p_n1_as;

var sum =(num6+num7+num8+num9+num10);
if(!isNaN(sum))
document.getElementById("suma").value = sum;

}
</script>

Aqui me da el resultado de la suma definitiva
<input class='form-control required' id='suma' name='promedio' placeholder='Promedio' type='text' value='".$registro['promedio']."' readonly size='5' maxlength='5'>
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS

Última edición por karenlorenadg; 08/12/2018 a las 12:51 Razón: Agregué mas texto
  #2 (permalink)  
Antiguo 08/12/2018, 14:15
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.068
Antigüedad: 14 años, 6 meses
Puntos: 775
Respuesta: Limitar a 2 decimales resultados en un input

Hola, karenlorenadg. Echa un vistazo a toFixed: https://developer.mozilla.org/es/doc...Number/toFixed
  #3 (permalink)  
Antiguo 08/12/2018, 14:54
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 373
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Limitar a 2 decimales resultados en un input

Disculpa, vi tu ejemplo y es algo si lo que necesito, pero no se donde ni como aplicarlo, disculpa, se poco de javascript podrias explicarmelo mejor?
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #4 (permalink)  
Antiguo 08/12/2018, 17:00
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.068
Antigüedad: 14 años, 6 meses
Puntos: 775
Respuesta: Limitar a 2 decimales resultados en un input

Por ejemplo, en lugar de esto:
Código:
document.getElementById("suma").value = sum;
Escribe esto:
Código:
document.getElementById("suma").value = sum.toFixed(2);


En síntesis, al resultado que quieras formatear le añades .toFixed(2)
  #5 (permalink)  
Antiguo 08/12/2018, 19:18
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 373
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Limitar a 2 decimales resultados en un input

Excelente, me funciono correctamente. Muchas gracias mi amigo. Bendiciones
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #6 (permalink)  
Antiguo 10/12/2018, 16:58
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 933
Antigüedad: 6 años, 1 mes
Puntos: 106
Respuesta: Limitar a 2 decimales resultados en un input

Si quisieras hacer tu propio método:

Ejemplo si tienes este número

123.456

y deseas solo dos décimales lo multiplicas por 100:

123.456*100

12345.6

Para eliminar ese flotante debes obtenerlo, la mejor manera es obteniendo su resto entre 1

12345.6%1 ---> 0.6

lo restas

12345.6-0.6 = 12345

Y ese número lo divides entre 100 para volver a la normalidad:

12345/100 = 123.45


Si lo pasas a code:

Código Javascript:
Ver original
  1. function myFixed(n,dec){
  2. var mul = n*Math.pow(10,dec);
  3. var dec = mul%1;
  4. var num = mul-dec;
  5. num *= Math.pow(10,-dec);
  6. return num;  
  7. }



La zona horaria es GMT -6. Ahora son las 13:16.