On 23 Sep 2011, at 6:48 PM, Philip McIntosh wrote: > I have a calculation project using buttons to input numbers into a UILabel. I > want it to format the numbers as they are entered to display grouping > separators. It has been a struggle but so far the best I have ben able to > achieve is this (I got the basic idea from a post at stackoverflow.com):
A threshold question: Do I understand correctly that the only record you have of the value of your accumulator is the text contents of a label? Why? When you call > NSDecimalNumber *number = [NSDecimalNumber > decimalNumberWithString:currentText]; you have no control at all over how the label's text is converted to a decimal. It may or may not be lossy. Better that you keep, as a model object, the decimal value, and avoid repeated round trips through the default parser. (You are careful to specify U.S. grouping and decimal separators for _output_, but the convenience parser you're using will use the separators from the current locale.) The rule is that you never, ever keep program state in a display object. If you _must_ go through a string (which should still be a model object, and not simply be left lying around in a label), set up an NSNumberFormatter and setGeneratesDecimalNumbers:YES, so you can get some control. You can then keep the formatter in a static variable, and reuse it for repeated conversions in both directions — the round trip will be likelier to preserve your intended value. I'm also curious to know what you intend by > currentText = [currentText stringByReplacingOccurrencesOfString:@"." > withString:@"."]; Once you've tamed those issues, see if your — F _______________________________________________ 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