ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1

ruby on rails cómo lidiar con NaN



ruby-on-rails ruby-on-rails-3 (1)

NaN es una instancia de Float . Use Float#nan? método.

>> nan = 0.0/0 # OR nan = Float::NAN => NaN >> nan.class => Float >> nan.nan? => true >> nan.is_a?(Float) && nan.nan? => true >> (nan.is_a?(Float) && nan.nan?) ? 0 : nan => 0

ACTUALIZAR

NaN también podría ser una instancia de BigDecimal :

((nan.is_a?(Float) || nan.is_a?(BigDecimal)) && nan.nan?) ? 0 : nan

o

{Float::NAN => 0, BigDecimal::NAN => 0}.fetch(nan, nan)

He leído algunas publicaciones con respecto a NaN pero no encontré la forma de manejarlo en Ruby on Rails. Quiero verificar un valor si es un NaN . Quiero reemplazarlo con cero (0). Intenté lo siguiente

logger.info(".is_a? Fixnum #{percent.is_a? Fixnum}")

cuando el porcentaje tiene NaN me devuelve falso.

He hecho algunos cambios en el registrador

logger.info("Fixnum #{percent.is_a? Fixnum} percent #{percent}")

Salida

Fixnum false percent 94.44444444444444 Fixnum false percent NaN Fixnum false percent 87.0