On 11 Oct 2014, at 20:47, Scott Ribe <scott_r...@elevated-dev.com> wrote:
> On Oct 11, 2014, at 7:36 AM, Scott Ribe <scott_r...@elevated-dev.com> wrote: > >> On Oct 11, 2014, at 2:04 AM, Gerriet M. Denkmann <gerr...@mdenkmann.de> >> 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 (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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com