Forum: Rails-ES Bignum out of Float range => Infinity

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bf47b813b0de4867a015fd4b54ac2fb4?d=identicon&s=25 Miguel Michelson (samek)
on 2008-12-11 21:25
(Received via mailing list)
Hola expertos,

tengo un método de modelo que realiza un calculo que lo guarda en la bd,
el
metodo es el siguiente

def pre_rank
    rank = 1
    tag_count =  self.tags.count
      self.tags.each do |t|
        rank *= t.taggings_count*tag_count

      end
      puts rank
      self.rank_cache =  (rank**(1.0/tag_count)).round(3)

      self.save!
  end

mi problema es que a veces la variable rank se dispara y al calcular
(rank**(1.0/tag_count)).round(3), obtengo un  warning: Bignum out of
Float
range=> Infinity

la idea es que rank sea un valor que se multiplique por si mismo en cada
iteracion de cada tag * sus taggings(ocurrencias de ese tag) * la
cantidad
de los tags asociados al item, y aveces este valor crece mucho y al
calcular
la potencia de , me salta el error,

como puedo controlar esto?


saludos cordiales

Atte.
Miguel Michelson Martinez
B8eb6140a480852282b1deb8f7987a24?d=identicon&s=25 Silvio Quadri (Guest)
on 2008-12-12 12:13
(Received via mailing list)
2008/12/11 Miguel Michelsongs <miguelmichelson@gmail.com>:
>
>
> la idea es que rank sea un valor que se multiplique por si mismo en cada
> iteracion de cada tag * sus taggings(ocurrencias de ese tag) * la cantidad
> de los tags asociados al item, y aveces este valor crece mucho y al calcular
> la potencia de , me salta el error,
>
> como puedo controlar esto?

¿No será que tag_count es 0?. Podrías controlarlo antes de ejecutar la
división.Silvio
This topic is locked and can not be replied to.