On Saturday, December 12, 2009, at 11:32AM, "Ben Haller" 
<bhcocoa...@sticksoftware.com> 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.  :->
>

It is absolutely not guaranteed to work - see 
<http://docs.sun.com/source/806-3568/ncg_goldberg.html#1251>.

To be able to convert base 2 (the binary representation) to base 10 (the 
textual representation) without a loss of precision is possible (since 2 is a 
factor of 10), though it potentially requires at least 17 digits (quick back of 
the envelope calculation of how many digits are in 1/2**24, given that a float 
has a 24 bit mantissa), and stringValue isn't documented as providing any 
specific number of digits of precision.

Going the other way, 0.1 (base 10) isn't possible to be represented exactly as 
a floating point number.


_______________________________________________

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