Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it correct to compare two rounded floating point numbers using the == operator?

Or is there a chance that the operation will fail?

Thanks.

I chose the wrong term and what I really meant was rounding to 0, not truncation.

The point is, I need to compare the integer part of two doubles and I'm just casting them to int and then using ==, but, as someone pointed out in one of my earlier questions, this could throw an overflow exception if the double can't fit into the integer.

So the question would be 'Is it correct to use the == operator to compare two doubles that have previously been rounded to 0, or should I stick to the casting to int method and catch a possible exception?

like image 455
Trap Avatar asked Oct 25 '08 13:10

Trap


1 Answers

Here's the updated site which discusses the pros and cons of several methods of comparing floating point numbers. (You can still view the old site here.)

The method I'd go with is the "relative error" method. Find the difference between the two numbers, convert that to a percentage of the numbers, and if that percentage is sufficiently small, then you've got equality.

like image 127
nickf Avatar answered Nov 02 '22 16:11

nickf