Hello,

I am stuck with floats (doubles, to be precise) comparison.
In part of my app, I am dealing with NSPoint components (x, y)
comparison. On 32bit architecture NSPoint components are floats, and
direct comparison ( float1 == float2 ) works fine. But on 64bit, they
are doubles and '==' does not work due to precision.

Lets take an example: C and D are NSPoints. Lets say C is
(1.000000000000000444089209850063, whatever) and D is
(1.000000000000000000000000000000, whatever).
If my code is: if (C.x == D.x) thenDoSomething; , then thenDoSomething
is not called. Of course.

But on my needs, float is more than enough for precision.

So question is, what is the most efficient (performance side) and
simplest (coding side) way to compare those bastards?

At the moment I am thinking about:

a) BOOL _floatsOrDoublesAreEqual = ( (float)C.x == (float)D.x);

b) BOOL _floatsOrDoublesAreEqual = ( fabs(C.x - D.x) <= _epsilon ); ,
where _epsilon is something like 0.0001.

Regards,

Rimas M.
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to