Gracias Andres por el dato, voy a ojear el ScaledDecimal.

Saludos

On 10/17/07, Andres Valloud <[EMAIL PROTECTED]> wrote:
>
> Sergio,
>
> Si, *parece* funcionar... pero como igualdad es imposible.  Aca hay un
> caso mas facil, pero al final es lo mismo.  Obviando detalles que no vienen
> al caso, todos los numeros de punto flotante son un entero m de longitud
> limitada que se llama mantisa, y un exponente e.  El valor del numero esta
> dado, basicamente, asi:
>
> m x 2^e
>
> El punto flota porque si uno cambia e, el punto binario del valor de
> arriba se mueve sin necesidad de cambiar m.  Ahora bien, supongamos que
> tenemos la igualdad:
>
> 1 asFloat / 3 asFloat = (1/3)
>
> Como las conversiones de 1 y 3 a floats funcionan sin perdida de
> precision, entonces da la impresion de que deberia estar bien.  Pero...
>
> m x 2^e = 1 / 3
>
> Como m es un entero, e tiene que ser < 0.  Por lo tanto, ese 2^e es una
> fraccion de la unidad.  Si ponemos j = -e,
>
> m x 2^-j = 1 / 3
>
> O sea,
>
> 3m = 2^j
>
> Por el teorema fundamental de la aritmetica, que dice que los numeros
> enteros admiten factorizacion unica, esta igualdad es imposible.  Por lo
> tanto, no existe ningun numero de punto flotante que represente a 1/3
> exactamente.
>
> Lo mismo pasa con cualquier fraccion que tenga factores impares (salvo 1)
> en su denominador, en particular con las fracciones de 10 por tener 10 el
> factor 5.  Por esto, redondear numeros de punto flotante a una cantidad x de
> cifras decimales no tiene porque funcionar como uno espera.
>
> Andres.
>
>
> On 10/17/07, Sergio Fedi <[EMAIL PROTECTED]> wrote:
> >
> >
> > > 0.85 = (17/20)
> >
> > ¿por?
> >
> > Esto, en Dolphin 6 me da bien.
> >
> > Probé darle mas decimales:
> >
> > 0.000085 = (17/200000)
> >
> > Y tambien da.
> >
> > > >
> >

--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "clubSmalltalk" de 
Grupos de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo 
electrónico a [email protected]
 Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
 Para obtener más opciones, visita este grupo en 
http://groups.google.com/group/clubSmalltalk?hl=es.

-~----------~----~----~----~------~----~------~--~---

Responder a