Foros del Web » Programando para Internet » Javascript »

Error en multiplicación

Estas en el tema de Error en multiplicación en el foro de Javascript en Foros del Web. ¿Alguien puede ayudarme? Es bastante urgente. Tengo un pequeño problema en una operación matemática. Explico... tengo el campo de un formulario cuyo valor es 0.1 ...
  #1 (permalink)  
Antiguo 15/10/2004, 02:53
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
Error en multiplicación

¿Alguien puede ayudarme? Es bastante urgente.

Tengo un pequeño problema en una operación matemática.

Explico...

tengo el campo de un formulario cuyo valor es 0.1:
document.form.CANTIDAD.value
defino una variable y le inserto el valor del campo:
var C_CANTIDAD = document.form.CANTIDAD.value
efectuo la siguiente operación:
C_CANTIDAD *= 4.99
Pues bien... el resultado de la operación no da 0.499 como sería de esperar. No se de donde, se saca el siguiente resultado: 0.4990000000000005.

¿Por qué ocurre esto?¿Alguien podría darme una solución para que no ocurra?
  #2 (permalink)  
Antiguo 15/10/2004, 04:03
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61

Es curioso, el error se produce con todos los navegadores (windows al menos). He comprobado que con esta función no ocurre (quitando antes los decimales y luego volviendolos a poner).

Es absurdo una función tan larga para algo tan sencillo, pero...

Prueba a ver!
Código PHP:
<body>
<
script>
cantidad3=4.99
function diezPorCiento(){
cantidad2=document.forms[0].elements["cantidad"].value;
decimales=cantidad2.split(".")[1].length;//cuantos decimales
ceros=Math.pow(10,decimales);//si multiplicamos por esto nos quedamos sin decimales
cantidad2*=ceros;//Hacemos que desaparezcan los decimales
resultado=cantidad2*=(cantidad3/ceros);//los volvemos a crear.
alert(resultado)

}
</script>

<form action="javascript:diezPorCiento();">
<input type="text" name="cantidad">
<input type="submit">
</form>
</body> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 15/10/2004 a las 04:12
  #3 (permalink)  
Antiguo 15/10/2004, 04:24
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
Muchas gracias, algo así había hecho yo, pero, lo que tú dices, me parecía un poco absurdo tener que hacer todas estas operaciones para algo que no tiene sentido y no sabía por qué podía suceder ésto. Gracias otra vez.
  #4 (permalink)  
Antiguo 15/10/2004, 04:27
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
De nada!

Si en vez de multiplicarlo por 0.1 lo divides por 10 no ocurre:

alert(cantidad/=10);

Pero no sé si te servirá!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 15/10/2004, 04:48
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
No me había dado cuenta. Cuando vuelves a operar con el resultado, te da el mismo error. No entiendo nada de nada.
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 07:19.