Hola, soy nuevo por acá, quisiera ver si me pueden orientar por que sucede algo tan extraño en una operación básica de resta. irb(main):010:0> a=210 => 210 irb(main):011:0> a=a.to_f-166.67 => 43.33 irb(main):012:0> a => 43.33 irb(main):013:0> a=a.to_f-43.33 => 1.4210854715202e-14 Lo que se espera es que la operación devuelva cero. Y como ven no pasa eso, la version de ruby es: ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux] Gracias.
on 2010-04-10 04:37
on 2010-04-11 18:52
Julio césar Jurasec wrote: > Hola, soy nuevo por acá, quisiera ver si me pueden orientar por que > sucede algo tan extraño en una operación básica de resta. > > > irb(main):010:0> a=210 > => 210 > irb(main):011:0> a=a.to_f-166.67 > => 43.33 > irb(main):012:0> a > => 43.33 > irb(main):013:0> a=a.to_f-43.33 > => 1.4210854715202e-14 > > Lo que se espera es que la operación devuelva cero. Y como ven no pasa > eso, la version de ruby es: ruby 1.8.7 (2010-01-10 patchlevel 249) > [i486-linux] > > Gracias. Como vez realmente el numero es muy cercano a 0 es un 1.42 con 14 ceros a la izquierda, pero para representar lo que quieres es mejor que termines la opereacion o con un redondeo o convirtiendo la variable a integer. Saludos, Cristian Vasquez MedellÃn - Colombia
on 2010-04-12 07:32
Cristian Vasquez wrote: > Julio césar Jurasec wrote: >> Hola, soy nuevo por acá, quisiera ver si me pueden orientar por que >> sucede algo tan extraño en una operación básica de resta. >> >> >> irb(main):010:0> a=210 >> => 210 >> irb(main):011:0> a=a.to_f-166.67 >> => 43.33 >> irb(main):012:0> a >> => 43.33 >> irb(main):013:0> a=a.to_f-43.33 >> => 1.4210854715202e-14 >> >> Lo que se espera es que la operación devuelva cero. Y como ven no pasa >> eso, la version de ruby es: ruby 1.8.7 (2010-01-10 patchlevel 249) >> [i486-linux] >> >> Gracias. > > Como vez realmente el numero es muy cercano a 0 es un 1.42 con 14 ceros > a la izquierda, pero para representar lo que quieres es mejor que > termines la opereacion o con un redondeo o convirtiendo la variable a > integer. > > Saludos, > > Cristian Vasquez > MedellÃn - Colombia Si, entiendo el número, solo que no se me hace una solución optima lo del redondeo ni lo del casteo ya que es dinero lo que estoy representando, además 43.33 - 43.33 es 0, no un número cercano a cero ;). Gracias por tu respuesta Cristian.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.