Weird problem.

E

Erik Terpstra

Why is the last expression false?


class Part
attr_reader :x, :y, :x2, :y2

def height
y2 - y
end

def initialize(x, y, x2, y2)
@x, @y, @x2, @y2 = x, y, x2, y2
end
end

part = Part.new(200.40, 248.32, 417.0, 306.52)

puts "part.height == #{part.height.inspect}" # part.height == 58.2

p part.height == 58.2 #-> false !!??
 
R

Ryan Davis

Why is the last expression false?
...
p part.height == 58.2 #-> false !!??

Same reason in pretty much every other language. Floating point
arithmetic is imprecise.

p part.height - 58.2 #-> -1.4210854715202e-14

If you look in test/unit/assertions.rb you'll find assert_in_delta
(f1, f2, d) for exactly this reason.
 
E

Erik Terpstra

Ryan said:
Same reason in pretty much every other language. Floating point
arithmetic is imprecise.

p part.height - 58.2 #-> -1.4210854715202e-14

If you look in test/unit/assertions.rb you'll find assert_in_delta (f1,
f2, d) for exactly this reason.

Thanks a lot, I should have known this.

Cheers,

Erik.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,024
Latest member
ARDU_PROgrammER

Latest Threads

Top