From: Charlie Lehardy Date: 2007-08-30T09:02:15+09:00 Subject: Bug in % (Float)? ------=_Part_2976_21612418.1188432133240 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Modulo should be a fairly simple operation, however I'm finding some very odd results and am wondering what is going on... For instance: irb(main):001:0> 1 % 0.1 => 0.1 Shouldn't 1 % 0.1 be 0.0 and not 0.1? Also, look at the following example: irb(main):002:0> a = 1 => 1 irb(main):003:0> b = 0.1 => 0.1 irb(main):004:0> a += (a % b) if ((a % b) > 0) => 1.1 irb(main):005:0> a += (a % b) if ((a % b) > 0) => 1.2 irb(main):006:0> a += (a % b) if ((a % b) > 0) => 1.3 irb(main):007:0> a += (a % b) if ((a % b) > 0) => 1.4 irb(main):008:0> a += (a % b) if ((a % b) > 0) => 1.5 irb(main):009:0> a += (a % b) if ((a % b) > 0) => 1.59999999999999 Something is seriously messed up here... Of course, if you do the following: irb(main):024:0> a = 1 => 1 irb(main):025:0> b = 0.1 => 0.1 irb(main):026:0> a += ((a * 100) % (b * 100)) if (((a * 100) % (b * 100)) > 0) => nil irb(main):027:0> a => 1 Everything works as expected (at least as *I* expect it to work). So, can anybody tell me what's going on here? Are things really broken, or am I just expecting the wrong results? Thanks, Charlie ------=_Part_2976_21612418.1188432133240--