Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: SrTrp en 1 Mayo 2020, 22:05 pm



Título: javascript Number.isInteger(10.0) retorna false
Publicado por: SrTrp en 1 Mayo 2020, 22:05 pm
Bueno quiero saber si un numero es entero, para ello la variable que uso esta en un arreglo y pasa por varios métodos.
les pondré desde la inicialización hasta donde me retorna false.
Código
  1. //aqui la creo
  2. var posPy = [550, 11];
  3.  
  4. //aqui esta en un metodo donde empiezo a crear valores de decimal
  5. posPy = [posPy[0] - tplayer, posPy[1] - 0.2];
  6. posPy[1] = posPy[1].toFixed(1);  //solo quiero dejar un decimal por que me botana por ejemplo 10.8,10.700000000004,10.600000000002  y así iba por ello obte de que solo aceptara un decimal
  7.  
  8.  
  9. //aqui el ultimo metodo donde la uso
  10. var y = this.posPy[1];
  11.    console.log(y+", Estado="+Number.isInteger(this.posPy[1]));
  12.    if(Number.isInteger(this.posPx[1]) && Number.isInteger(this.posPy[1])){
  13. //AQUI JAMAS ENTRA POR QUE SIEMPRE ME RETORNA FALSE
  14. //inclusive llegue a pensar que no aceptaba numeros como 2.0, 9.0 pero hice un test manuel y si retorna true esos numeros
  15.  
  16.  


Título: Re: javascript Number.isInteger(10.0) retorna false
Publicado por: MinusFour en 1 Mayo 2020, 22:24 pm
Number.prototype.toFixed siempre regresa un string. Lo más probable es que tengas un string "11.0" en lugar del número 11.


Título: Re: javascript Number.isInteger(10.0) retorna false
Publicado por: @XSStringManolo en 1 Mayo 2020, 22:36 pm
En tu ejemplo no tienes posPx definido en ningún sitio.

Haz un: alert(typeof(this.posPx[1])); justo antes del if, a ver si es un número o un objeto, o algo distinto.
Si usas por ejemplo new Number(10) estás creando un objeto, no un tipo number primitivo.
Ten cuidado con tu código y las conversiones implícitas. Estaría bien que pusieras todo el código si no es excesivamente grande para poder ver cual es el problema.


Probablemente si haces esto:
posPy[1] = +(posPy[1].toFixed(1));
se te solucione.


Título: Re: javascript Number.isInteger(10.0) retorna false
Publicado por: SrTrp en 1 Mayo 2020, 23:13 pm
Gracias no tenia idea de que retornaba  string, pero ya lo arregle como me menciono @XSStringManolo
el posPx no omiti por que hacía el mismo procedimiento que posPy