El culpable de eso seguramente es el algoritmo de redondeo de las
fracciones. 

Dolphin: 
11.115 roundTo: 0.01 -> 11.12
70.085 roundTo: 0.01 ->70.08

Vw: 
11.115 roundTo: 0.01 -> 11.12
70.085 roundTo: 0.01 -> 70.09

La implementación de #roundTo: es la misma para los dos:

        (self / factor) rounded * factor

Pero difieren en el algoritmo que usa la fracción para resolver el
rounded.
No tengo a mano el ANSI Smalltalk a ver si dice algo de que algoritmo
eligieron para resolver. 
Los redondeos computacionalmente son un dolor de cabeza, evaluate esto: 

100.64 fractionPart

Debería darte 0.64, pero 

En dolphin tenés: 0.640000000000001 
En Vw tenés: 0.639999
Y en VAST (no lo tengo instalado) me juego por un 0.639999

Conclusión, jamás intentes manejar dinero con Floats porque vas a sumar
cualquier fruta. Recuerdo que hay un bit de seteo en el procesador que
permite trabajar con mas o menos precisión del punto flotante, es muy
interesante. Estas son las veces que chocamos con la realidad de cuando
se va a binario y vuelve a decimal, juegan los errores. No todo es
exacto en este mundo, por suerte :-)

Saludos,
Hernán.-

> -----Mensaje original-----
> De: [email protected] 
> [mailto:[EMAIL PROTECTED] En nombre de Santiago 
> Cardoso Geller
> Enviado el: Miércoles, 26 de Abril de 2006 05:33 p.m.
> Para: clubSmalltalk
> Asunto: [clubSmalltalk] VAST - roundTo: 0.01
> 
> 
> 
> Hola amigos. Quería comentar una experiencia.
> 
> En VAST 6.0.3, el resultado de
> 
> 1.115 roundTo: 0.01 es 1.11 cuando debería ser 1.12.
> Lo mismo pasa con 70.085. 70.085 roundTo: 0.01 -> 70.08 
> cuando debería ser 70.09. Probé lo mismo convirtiéndolos a 
> ScaledDecimal. No se arregla.
> 
> Probé en VAST 4.5, pero también anda de la misma forma.
> 
> Me fijé en Dolphin, y el primer caso devuelve el resultado 
> esperado. 1.115 roundTo: 0.01 -> 1.12
> 
> Pero con el otro numero no. Sigue andando "mal".
> 70.085. 70.085 roundTo: 0.01 -> 70.08
> 
> La implementación de #roundTo: en ambos ST son distintas. 
> Pero igual no andaría ninguna de las dos.
> 
> ¿Alguien tuvo este tipo de problemas? ¿Tiene alguna solución?
> 
> Gracias y abrazo para todos,
> Santiago
> 
> 
> > 


--~--~---------~--~----~------------~-------~--~----~
Ha recibido este mensaje porque está suscrito a Grupos de Google 
"clubSmalltalk" grupo.
 Si quiere publicar en este grupo, mande un correo electrónico a 
[email protected]
 Para anular la suscripción a este grupo, envíe un mensaje a [EMAIL PROTECTED]
 Para visualizar más opciones, visite este grupo 
enhttp://groups.google.com/group/clubSmalltalk
-~----------~----~----~----~------~----~------~--~---

Responder a