Ver Mensaje Individual
  #11 (permalink)  
Antiguo 29/04/2005, 13:47
angsanchez
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Estoy seguro de que es un problema de la forma como internamente calcula el ordenador. Por eso sólo pasa con algunos números. Por la misma razón, no creo que multiplicar por 100 y luego dividir, o sumar y restar 0.1, sea una solución universal.
Lo más seguro es que apliques un redondeo al número de decimales que quieras mostrar en el resultado.
parseInt no sirve porque sólo devuelve enteros, no decimales; además, no redondea, sino que trunca (por ejemplo, parseInt(7.9999)=7).
parseFloat no hace nada respecto al problema, tan solo sirve para convertir un texto en un número.
Math.round sí redondea correctamente, pero sólo devuelve enteros (Math.round(7.9999)=8)

Con lo cual, la solución es pasar tu dato resultado por la función:
Código:
function redondeo(num,numDec)
{
num = num * Math.pow(10,numDec)
num = Math.round(num)
num = num / Math.pow(10,numDec)
return num
}
Para tu ejemplo sería:
Código:
<script "language=Javascript " type="text/javascript">
var x = 9.7;
var y = 1.1;
document.write(redondeo(eval("x + y"), 2) + "<br>");
</script>
__________________
Angel :cool:

Última edición por angsanchez; 29/04/2005 a las 13:53