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 -~----------~----~----~----~------~----~------~--~---
