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