Bueno, perdonen si les hice perder tiempo. Encontré el problema.
Era el 0.01 que se le pasa al #roundTo:
También tiene que ser algo distinto a float. Por ejemplo un
ScaledDecimal o un Fraction.

(ScaledDecimal fromString: '1.115') roundTo: 0.01 -> 1.11
(ScaledDecimal fromString: '1.115') roundTo: (ScaledDecimal
fromString: '0.01') ->  1.12s2


(ScaledDecimal fromString: '70.085') roundTo: 0.01 ->  70.08
(ScaledDecimal fromString: '70.085') roundTo: (ScaledDecimal
fromString: '0.01') ->   70.09s2


Gracias y saludos,
Santiago

On 4/27/06, Santiago Cardoso Geller <[EMAIL PROTECTED]> wrote:
> > No probe en VAST pero simplemente esto en Visual Smalltalk
> > 1.1151 roundTo: 0.01 -> 1.12
> > 70.0851 roundTo: 0.01 -> 70.09
>
> Efectivamente, en VAST da igual.
>
> >Conclusión, jamás intentes manejar dinero con Floats porque vas a sumar
> > cualquier fruta
>
> Claro. Eso ya lo tenía en cuenta. Pero tanto en Dolphin como en VAST,
> aunque use ScaledDecimal, el caso de 70.085 sigue redondeando mal.
>
> (ScaledDecimal fromString: '70.085') roundTo: 0.01 -> 70.08
>
> Qué loco ésto. Parece una pavada, pero tengo una diferencia de 1 centavo !! 
> je.
> Voy a ver el VW. Sino me hago un método que redondee de otra forma.
>
> Gracias y abrazo,
> Santiago
>
>
> On 4/27/06, GallegO <[EMAIL PROTECTED]> wrote:
> >
> > Hola
> >
> > Aparte de lo que comentaba Hernan fijate si podes levantar el numero de
> > otra manera. Tambien tiene que ver cómo se parsea el numero y se
> > convierte a Float en cada Smalltalk, si se usan librerias del SO, etc.
> >
> > No probe en VAST pero simplemente esto en Visual Smalltalk
> > 1.1151 roundTo: 0.01 -> 1.12
> > 70.0851 roundTo: 0.01 -> 70.09
> > Fijate que agregarle un digito mas de precision hace que devuelva
> > valores correctos. Obvio, no es el mismo numero.
> >
> > Si buscas por Internet vas a encontrar miles de explicaciones se por qué
> > no se pueden representar en forma binaria y exacta cualquier numero decimal.
> >
> > Saludos
> >   GallegO
> >
> > Santiago Cardoso Geller escribió:
> > > 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