2010-09-15 5 views
1

J'essaye d'écrire une fonction qui extrait le nombre le plus bas d'un nombre entier. Par exemple:Ruby Entier/Bizarre de Fixnum

> 24689.lowest_order 
=> 9 

Jusqu'à présent j'ai:

class Integer 
    def lowest_order 
    Integer (self/10.0 - self/10) * 10 
    end 
end 

Et ça marche .... parfois:

irb(main):002:0> n = 235 
=> 235 
irb(main):007:0> n.class 
=> Fixnum 
irb(main):004:0> n/10.0 
=> 23.5 
irb(main):005:0> n/10 
=> 23 
irb(main):003:0> n.lowest_order 
=> 5 
irb(main):008:0> (n/10.0 - n/10)*10 
=> 5.0 

alors que d'autres fois, il échoue (pas de changement de code entre les exemples):

irb(main):010:0> n = 232 
=> 232 
irb(main):021:0> n.class 
=> Fixnum 
irb(main):009:0> n.lowest_order 
=> 1 
irb(main):011:0> n/10.0 
=> 23.2 
irb(main):012:0> n/10 
=> 23 
irb(main):013:0> n/10.0 - n/10 
=> 0.199999999999999 
irb(main):022:0> n = Integer 232 
=> 232 
irb(main):023:0> n/10.0 - n/10 
=> 0.199999999999999 

Quel est le problème? Je préférerais ne pas devoir filtrer entier à travers String juste pour récupérer la partie la plus mineure du nombre.

Merci!

Répondre

Questions connexes