Pregunta

Me acaba de encontrar un error en algunas manipulaciones numéricas en mi programa y me estoy poniendo un FloatDomainError (NaN)

Así que empieza a registrar el número pasado con:

if(metric.is_a?(Numeric))
  self.metric = metric
else
  LOGGER.warn("metric #{metric} is not a number")
  self.metric=0
end

Sin embargo, el número se pasa en NaN es que al parecer is_a?(Numeric) como no consigo mi advertencia del registro, y que pasa a mi métrica métrica = método, que es donde consigo mi FloatDomainError

Ahora, corrígeme si me equivoco, pero ¿no parece semánticamente mal tener un NaN (no un número) sea de tipo numérico ?? ¿Puede alguien explicar esto a mí?

usando BTW jruby-1.4.1

¿Fue útil?

Solución

IEEE 754 números de punto flotante definir -INFINITY + infinito y NotANumber para que sea posible reaccionar a la división permite digamos por cero. también se puede calcular con estos por ejemplo, 2 + INF INF =

NaN no es una característica de rubí uniqe, que son numéricos en Java, C ++, ... demasiado

Otros consejos

creo que hacer una serie NaN hace perfectamente sentido ...

tratar 0,0 / 0,0 en IRB -> el resultado es NaN (que en este caso es infinito)

El infinito es matemáticamente tipo de un número, pero aún así, no se puede expresar con un tipo de datos ... en matemáticas se utiliza un símbolo especial también ...

PS: Se puede utilizar metric.nan? para comprobarlo ... entonces debería funcionar como se espera ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top