Comunidad de diseño web y desarrollo en internet online

Detalle con decimales

Citar            
MensajeEscrito el 16 Feb 2006 10:53 pm
Hola tengo este detalle:

En mi primer textinput pongo una cantidad x
En mi segundo textinput pongo una cantidad y

Si hago restas donde x-y=r

ejemplo 1:
x=7.5
y=7.45
Porque el resultado me da r=0.0499999999999998

Lo correcto es que me de r=0.05

ejemplo 2
x=3.5
y=3.45
El resultado me da r=0.0500000000000003
Lo correcto es que me de r=0.05

Este es mi codigo

Código :

on(click) {
   var r:Number = (parseFloat(_parent.x.text))-(parseFloat(_parent.x.text));
   trace("Resultado"+r);
}


Porque existe en el payer de flash este detalle?, como lo arreglo para que me de la cantidad correcta?

Gracias

Por manuel_cfe

106 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Feb 2006 12:01 am
Lo que pasa es que flash es preciso... demasiado yo diria.... XD me parece que hay por alli una funcion para las decimales... por que no te checas la ayuda de flash seguramente alli encontraras la respuesta ;)


(y)
Suerte

Por gabovanlugo

651 de clabLevel



Genero:Masculino  

Code Designer

firefox
Citar            
MensajeEscrito el 17 Feb 2006 08:55 am

manuel_cfe escribió:


Porque existe en el payer de flash este detalle?, como lo arreglo para que me de la cantidad correcta?


Oh... No es único del player, es problema de la máquina (ordenador) y su sistema binario, es un problema de TODOS los lenguajes de programación (claro, solo de aquellos que usen flotantes...xDDDD)

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 17 Feb 2006 03:49 pm
Entonces como lo arreglo:

Porque si quiero hacer comparaciones asi tal cual voy a tener problemas


ejemplo 2
x=3.5
y=3.45
El resultado me da r=0.0500000000000003
Lo correcto es que me de r=0.05


si digo:

if (0.05 >= r) {
trace("Es mayor"); // pero como r=0.0500000000000003 ni siquiera va a ser igual
}else if(0.05 < r) {
trace("Como hago para que sea por lo menos igual");
}

Por manuel_cfe

106 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Feb 2006 04:51 pm
:) oK, PARECE QUE CON ESTO ME VA BIEN

Código :

on(click) {
   var r:Number = (parseFloat(_parent.x.text))-(parseFloat(_parent.y.text));
   trace("Resultado"+r);
   if (0.05 > r) {
      trace("Es mayor"); // pero como r=0.0500000000000003 ni siquiera va a ser igual
   }else if(0.05 <= r) {
      trace("Como hago para que sea por lo menos igual");
   }
   r = Math.round(r*10000)/10000; //CON ESTO YA ME DA EL VALOR QUE REALMENTE ES  r=0.05
   trace(r);
}

 :D Espero que les sirva .... saludos

Por manuel_cfe

106 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Feb 2006 05:37 pm

manuel_cfe escribió:

:
if (0.05 > r) {
trace("Es mayor"); // pero como r=0.0500000000000003 ni siquiera va a ser igual
}else if(0.05 <= r) {
trace("Como hago para que sea por lo menos igual");
}


err... en ambos casos r lo pones como > que 0.5 ...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.