On 11 Oct 2014, at 20:47, Scott Ribe <[email protected]> wrote:

> On Oct 11, 2014, at 7:36 AM, Scott Ribe <[email protected]> wrote:
> 
>> On Oct 11, 2014, at 2:04 AM, Gerriet M. Denkmann <[email protected]> 
>> wrote:
>> 
>>> Note: converting to double does NOT loose any digits.
>> 
>> Well, it has to. Not sure how you're getting that output, but a double has 
>> 52 bits for the mantissa, so the largest integer it can represent without 
>> losing precision is about 4.5x10^15.
> 
> Oops. Forgot the implicit MSB 1 in normalized doubles, so I guess max is 
> ~9X10^15.

All integers up to 9007199254740992 are exact representable as double (which is 
probably ~9X10^15 as you mentioned).
The next representable integer is then 9007199254740994. 
And of course the difference between representable numbers increases as the 
numbers get bigger.

> Anyway, your number is well into the range where it lose binary digits, so it 
> would just be pure (very unlikely) luck if that specific integer happened to 
> be one that is precisely representable as a double.

Yes, this number is well into the range where not every integer is 
representable as double. But some are. And this number was chosen to be one of 
those.

But still: "%.22g" prints the exact number (although not very readable) whereas 
NSNumberFormatter looses digits.
Just using sprintf and then adding the thousands-separators will give a better 
result.
Which means: the ICU algorithms are not very good with large numbers.


Kind regards,

Gerriet.


_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to