Hi, I've come across a strange bug in ruby (running 1.8.6 on Linux, but confirmed also in 1.8.5 on an older Mac). >> (-140.14 * 100).to_i => -14013 The desired result is, obviously, -14014. Strangely enough: >> (-140.14 * 100) => -14014.0 And: >> k = (-140.14 * 100) => -14014.0 >> k.to_i => -14013 HOWEVER...... >> -14014.0.to_i => -14014 Is this a strange behaviour or what? Workaround is like this: >> k.to_s.to_i => -14014 Can someone please confirm this strange behaviour?... I know it is also happening for some other numbers too: (0..1000).each do |n| n = n.to_f + (n.to_f / 100) k = (n * 100) if k != k.to_s.to_f puts "K does not equal itself!? #{k} != #{k.to_s.to_f}" end if k.to_i != k.to_s.to_i puts "Error with k = #{k}!? #{k.to_i} != #{k.to_s.to_i}" end end I know a lot about floating point numbers, but this is really bizarre behaviour. Expected behaviour would be for no errors in the above test example. I don't expect floating point to be accurate (this is obvious), but I do expect floating point to be consistent (whole number floating point is guaranteed to be accurate with IEEE floating point standard right??). Thanks to anyone who can test this out. Kind Regards, Samuel Williams