Archive for June 6th, 2008

ZeroDivisionError, Infinity and NaN in ruby

irb(main):005:0> 1/0
ZeroDivisionError: divided by 0
irb(main):027:0> 1.0 / 0
=> Infinity

irb(main):024:0> Infinity = 1.0 / 0
=> Infinity
irb(main):025:0> Infinity
=> Infinity
irb(main):026:0> Infinity == 1.0 / 0
=> true

irb(main):006:0> 0/0
ZeroDivisionError: divided by 0
irb(main):001:0> 0.0 / 0
=> NaN
irb(main):028:0> 1.0 % 0
=> NaN

irb(main):020:0> NaN = 0.0 / 0
=> NaN
irb(main):021:0> NaN
=> NaN
irb(main):022:0> NaN == 0.0 / 0
=> false

irb(main):003:0> result = 0.0 / 0
=> NaN
irb(main):004:0> result.nan? # only available on Float
=> true

checking the return code of ruby system calls

irb(main):001:0> success = system 'pwd'
/Users/snusnu
=> true
irb(main):002:0> if success && $?.exitstatus == 0
irb(main):003:1>   :success
irb(main):004:1> else
irb(main):005:1*   :failure
irb(main):006:1> end
=> :success