On Dec 12, 2009, at 9:32 AM, Ben Haller wrote:

You should not compare floating point numbers for equality in most cases. This is true of any language on any platform.

Indeed, some floating-point numbers (such as the one represented by the integer 0x7fc00000) will compare as not equal to themselves:

I think what the OP really wanted to know (and I'm interested in the answer too) is whether going out to the stringValue and back to the doubleValue is guaranteed to yield a float that is bitwise identical to the original float, or whether there is "drift" in the least significant bit or two due to the changes in representation. Anyway, even if that's not the OP meant, that's what I'd like to ask. :->


The problem with floating point is that the binary form almost always uses binary arithmetic. That means that a number like 0.1 has an infinitely repeating binary form. It is likely that converting the string "0.1" to a float and then back will yield "0.1" because it will be rounded, but there are marginal cases where you won't get what you put in.

Also, the string can carry more information than the float. "8.336" is different from "8.336000". The latter implies that you know the precision to six decimal places, the former does not.
_______________________________________________

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