Suma Incorrecta

gdonnari
01 de Abril del 2004
prueben esto:
alert(10 * 0.03 + 10 * 0.03 + 10 * 0.03);

o sino

alert(10 * 0.02 + 10 * 0.02 + 10 * 0.02);

El resultado debería ser 0.9 y 0.6 en cualquier calculadora pero obtengo 0.899999999.. y 0.60000000001.

Si alguien sabe a que se debe y como puedo solucionarlo, se agradece.

Nota: estoy usando IE5.

Fradique
01 de Abril del 2004
aqui tenes dos formas de hacerlo, dependeria de tu explorador para decidir

Number.prototype.aproxima=function (precision)
{
aprox=""+Math.round(this*Math.pow(10,precision))
while (aprox.length<=precision) aprox="0"+aprox
posdec=aprox.length-precision
aprox=aprox.substring(0,posdec)+"."+aprox.substring(posdec,aprox.length)
return aprox
}

op=10 * 0.03 + 10 * 0.03 + 10 * 0.03
alert(op.aproxima(5))
op=10 * 0.02 + 10 * 0.02 + 10 * 0.02
alert(op.toFixed(5))

gdonnari
01 de Abril del 2004
gracias Fradique, funcionó perfecto.
La verdad me sorprendió que JavaScript sume mal.