Я пытаюсь написать функцию, которая вытаскивает номер младшего порядка из целого числа. Например:Ruby Integer/Fixnum weirdness
> 24689.lowest_order
=> 9
До сих пор у меня есть:
class Integer
def lowest_order
Integer (self/10.0 - self/10) * 10
end
end
И это работает .... иногда:
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
в то время как другие времена это не удается (без изменения кода между примерами):
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
Какова сделка? Я бы предпочел не фильтровать целое число через String только для получения самой младшей части числа.
Спасибо!
Я даже не подумал, что ... его явно слишком поздно, чтобы программировать! Спасибо, Грег. – 2010-09-15 05:25:13