2012-10-03 18 views
6

Acabo de recibir un "FloatDomainError" en mi aplicación, con el mensaje "NaN" donde el servidor normalmente describiría la ofensa. La página de error servidor me señala a estas líneas (así, la primera):Float Domain Error

n = ((self.weight * (c.percent)/100)/c.package_weight).to_i 
n.times do 

El problema parece estar relacionado con la .to_i, que está destinado a convertir lo que asciende a 8,35 en un entero de manera que pueda hacer n.times do.

El problema es que si me llevo a i_i, me sale un error que me dice, lógicamente, que no hay "tiempos" de método para el float 8.35. Pero no entiendo por qué no me deja redondear 8.35 a un número entero. Lo he intentado con .floor también, pero obtengo FloatDomainError.

¿Ideas sobre cómo completar esto para que pueda hacerlo funcionar?

Gracias!

Respuesta

13

Este error significa que usted trató de convertir un valor de NaN a int. NaN significa "No es un número". Eso probablemente significa que su cálculo es defectuoso y no resulta en 8.35. Tal vez el valor de c.package_weight es cero y se divide con él.