Le 24 nov. 2011 à 22:42, Conrad Shultz a écrit :

> Greetings,
> 
> (Happy Thanksgiving, to those in countries which celebrate it.)
> 
> I am experiencing a strange behavior with NSNumberFormatter.  For
> reasons that aren't really relevant to the matter at hand, I wanted to
> create a formatter that could support as precise a fraction as possible.
> 
> -setMaximumFractionDigits: takes an NSUInteger, so I tried using
> NSUIntegerMax as the argument.  But I got *no* fraction digits.  After
> some experimentation and a programmatic search, I determined that
> 100001871036415 is the largest value that gives reasonable results in
> the various -setMaximum...: methods.  Consider the following, with
> output interleaved as comments beneath respective NSLog() calls:
> 
> 
> 
> NSNumber *aNumber = [NSNumber numberWithDouble:123.456];
> 
> NSNumberFormatter *testFormatter = [[NSNumberFormatter alloc] init];
> 
> [testFormatter setMaximumFractionDigits:3];
> NSLog(@"max frac digits now %lu", [testFormatter maximumFractionDigits]);
> NSLog(@"3 frac digits: %@", [testFormatter stringFromNumber:aNumber]);
> 
> //2011-11-24 13:17:16.651 FormatterTest[24113:707] max frac digits now 3
> //2011-11-24 13:17:16.653 FormatterTest[24113:707] 3 frac digits: 123.456
> 
> [testFormatter setMaximumFractionDigits:100001871036415];
> NSLog(@"max frac digits now %lu", [testFormatter maximumFractionDigits]);
> NSLog(@"100001871036415 frac digits: %@", [testFormatter
> stringFromNumber:aNumber]);
> 
> //2011-11-24 13:17:16.653 FormatterTest[24113:707] max frac digits now
> 100001871036415
> //2011-11-24 13:17:16.654 FormatterTest[24113:707] 100001871036415 frac
> digits: 123.456
> 
> [testFormatter setMaximumFractionDigits:100001871036416];
> NSLog(@"max frac digits now %lu", [testFormatter maximumFractionDigits]);
> NSLog(@"100001871036416 frac digits: %@", [testFormatter
> stringFromNumber:aNumber]);
> 
> //2011-11-24 13:17:16.655 FormatterTest[24113:707] max frac digits now
> 100001871036416
> //2011-11-24 13:17:16.655 FormatterTest[24113:707] 100001871036416 frac
> digits: 123
> 
> [testFormatter setMaximumFractionDigits:100];
> NSLog(@"max frac digits now %lu", [testFormatter maximumFractionDigits]);
> NSLog(@"100 frac digits: %@", [testFormatter stringFromNumber:aNumber]);
> 
> //2011-11-24 13:17:16.656 FormatterTest[24113:707] max frac digits now 100
> //2011-11-24 13:17:16.657 FormatterTest[24113:707] 100 frac digits: 123.456
> 
> [testFormatter setMaximumFractionDigits:NSUIntegerMax];
> NSLog(@"max frac digits now %lu", [testFormatter maximumFractionDigits]);
> NSLog(@"NSUIntegerMax frac digits: %@", [testFormatter
> stringFromNumber:aNumber]);
> 
> //2011-11-24 13:17:16.657 FormatterTest[24113:707] max frac digits now
> 18446744073709551615
> //2011-11-24 13:17:16.658 FormatterTest[24113:707] NSUIntegerMax frac
> digits: 123
> 
> 
> 
> As you can see, the formatter is internally storing the correct value
> for maximumFractionDigits.
> 
> So, my questions are:
> 
> 1) Is this a bug or is it expected behavior that I should have known?
> 2) What is the significance of 100001871036415?  It's not a max for any
> common data type as far I can recall, it's not close to a power of 2 (if
> I did my math correctly, it's approximately 2 ^ 46.51), and Googling the
> number itself turns up nothing.
> 

Just a question. Why do you need a max frag digit greater than a couple of tens 
? 

-- Jean-Daniel




_______________________________________________

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

This email sent to [email protected]

Reply via email to