Foros del Web » Programando para Internet » Javascript »

evitar error cuando mi entero es 10

Estas en el tema de evitar error cuando mi entero es 10 en el foro de Javascript en Foros del Web. Tengo este código para sacar un promedio… separo mi parte entera y mi parte decimal si tengo por ejemplo 8.5 baja a 8 si tengo ...
  #1 (permalink)  
Antiguo 25/11/2014, 17:20
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
evitar error cuando mi entero es 10

Tengo este código para sacar un promedio… separo mi parte entera y mi parte decimal si tengo por ejemplo 8.5 baja a 8 si tengo 8.6 sube a 9… todo bien hasta aca pero si tengo 10 me queda en 1… como puedo tomar aca mis dos dígitos del entero
Desde ya gracias
Código HTML:
var promedio=((p01+p02+p03)/10).toFixed(1); 
var texto=promedio.toString();
arr=texto.split('.');
var entero=Number(arr[0]);
var decimal=Number(arr[1]);
if(entero>5 && decimal>5)
   var valorFinal=Number(texto[0])+1;

if(entero>5  && decimal<=5)
   var valorFinal=Number(texto[0]);
   document.getElementById('final' + i).value=valorFinal;

}
  #2 (permalink)  
Antiguo 26/11/2014, 06:24
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: evitar error cuando mi entero es 10

para hacer todo eso tienes la función Math.round(). ten en cuenta que en este caso 8.5 retornará 9
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 26/11/2014, 11:21
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: evitar error cuando mi entero es 10

Gracias Isa, pero es una condición que debo hacer con.5 baja ...

de hecho funciona bien solo el 10 me lo baja me lo pone con 1
todos los demas si pongo 9.5 baja a 9
9.6 sube a 10 etc etc
  #4 (permalink)  
Antiguo 26/11/2014, 13:30
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: evitar error cuando mi entero es 10

Podrías usar el round que sugiere IsaBelM, añadiendo una simple resta:

Código Javascript:
Ver original
  1. //En este ciclo verás cómo queda redondeado el número según sus decimales:
  2. var nums=[9,9.1,9.2,9.3,9.4,9.5,9.6,9.7,9.8,9.9,10];
  3. for(var x=0;x<nums.length;x++){
  4.     var j=nums[x]-0.1;
  5.     var r=Math.round(j);
  6.     alert(nums[x]+' '+j+' '+r);
  7. }

en tu caso:

Código Javascript:
Ver original
  1. var promedio=((p01+p02+p03)/10)-0.1;
  2. var valorFinal=Math.round(promedio);
  #5 (permalink)  
Antiguo 26/11/2014, 13:44
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: evitar error cuando mi entero es 10

Gracias amigo pero no puedo hacerlo asi ya que tengo otras excepciones si mi numero es menor a 7 ejemplo 6.9 no se resondea a 7 sino q baja a 5...

no es posible determinar si mi variable entero tiene dos cifras ??? es decir 10

para dejarlo en promedio como 10 y no como 1...

ya que solo me esta tomando el 0
  #6 (permalink)  
Antiguo 26/11/2014, 13:56
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: evitar error cuando mi entero es 10

Pues podrías adaptar lo que te propuse, aunque sería mejor si indicas todas las condiciones que se han de tomar en cuenta, o si tienes muchas restricciones puedes hacer un arreglo con los valores a redondear

ejemplo:
$redondeo={'6.9':6.5,'7.1':7...etc};
  #7 (permalink)  
Antiguo 26/11/2014, 16:27
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: evitar error cuando mi entero es 10

puede que te sirva validar primero de si se trata de un número entero o decimal
Cita:
function fnc(valor) {
if(valor.isEntero()) {
console.log('entero')
} else {
console.log('decimal')
}
if(valor.toString().length == 2) {console.log('el número: ' + valor + ' es un entero, igual o mayor que 10');}
}

Number.prototype.isEntero = function() {
return !/\./.test(this.toString());
};

var numeros = [1, 5, 30, 4.5, 53, 3., 6, 3, 0, -2];

numeros.forEach(function(n){fnc(n);});
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 26/11/2014, 17:49
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: evitar error cuando mi entero es 10

Esto es lo q tengo


Código HTML:
var promedio=((p01+p02+p03+p04)/10).toFixed(1); 
var texto=promedio.toString();
arr=texto.split('.');
var entero=Number(arr[0]);
var decimal=Number(arr[1]);
var reprobado=Number(5);


if(entero>6 && decimal>5)
 var valorFinal=Number(texto[0])+1;
 
if(entero>6 && decimal<=5)
   var valorFinal=Number(texto[0]);
   document.getElementById('final' + i).value=valorFinal;

if(entero<=6 && decimal<=5)
  
   document.getElementById('final' + i).value=reprobado;

}


En general si es un numero mayor que 6 sigue los siguientes lineamentos entero mayor a 6 y decimal mayor a .5 sube al siguiente entero , ejemplo 7.6=8

entero mayor a 6 y decimal menor o igual a .5 queda solo la parte entera , ejemplo 7.5=7

entero igual o menor a 6 no importa sus decimales queda en 5...

les decia que funciona bien excepto con el 10... no se como checar si son dos datos en entero...
hice esto
var texto=promedio.toString();
var nc=(texto.length); //saque el total de caracteres de mi cadena


y lo deje asi (en mis demás if metí nc !=2 )
if(nc==2 )

document.getElementById('final' + i).value=diez;

pero nada sigue saliendo 1....
  #9 (permalink)  
Antiguo 27/11/2014, 05:27
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: evitar error cuando mi entero es 10

prueba con esto otro
Cita:
function fnc(valor) {
if (valor <= 7) {
console.log(valor + ' -> 5');
} else {
var decimal = (valor-parseInt(valor));
if (decimal > .5) console.log(valor + ' -> ' + Math.ceil(valor));
if (decimal <= .5) console.log(valor + ' -> ' + Math.floor(valor));
}
}

var numeros = [1.9, 5, 9.5, 5.3, 8.1, 6.7, 10, 6.5];

numeros.forEach(function(n){fnc(n);});
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: entero, valor
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 19:18.