有人问过类似的问题,但我发现提供的解决方案不适用于最新的 iOS SDK,或者不完全适用于这种特殊情况。
我使用 NSNotification 调用一个方法,该方法在 UILabel 中使用分组符号格式化数字,因为它是使用按钮输入中的数字输入的。它也适用于整数和小数——只要小数点后没有输入零。例如,如果输入 2000,它会显示为 2,000,因为它输入得很好。如果输入 23.345,也显示得很好。对这些数字进行的任何计算都是正确的。但是不能输入0.0001或者0.2340007!它只是不会在小数点后附加任何零。
我从 stackoverflow 的另一篇文章中得到了原始代码的想法:
NSString *currentText = [display_ text];
currentText = [currentText stringByReplacingOccurrencesOfString:@","
withString:@""];
currentText = [currentText stringByReplacingOccurrencesOfString:@"."
withString:@"."];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@","];
[formatter setDecimalSeparator:@"."];
[formatter setMaximumFractionDigits:10];
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:currentText];
NSString *finalText = [formatter stringFromNumber:number];
NSString *lastChar = [currentText substringFromIndex:[currentText length] - 1];
if ([lastChar isEqualToString:@"."])
{
finalText = [finalText stringByAppendingString:@"."];
}
[display_ setText: finalText];
[formatter release];
格式化程序的参数没有多少(我已经尝试过)允许在小数点后输入零。