我需要在UITextField中解析一些文本并将其转换为百分比。理想情况下,我希望用户在文本字段中输入12%或12%的内容,然后将其解析为数字百分比。
这就是奇怪的。数字格式器似乎不喜欢12并且似乎将12%除以10000而不是100:
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setNumberStyle:NSNumberFormatterPercentStyle];
NSNumber *n1 = [formatter numberFromString:@"12"];
NSNumber *n2 = [formatter numberFromString:@"12%"];
NSLog(@"n1 = %@", n1); // n1 = (null)
NSLog(@"n2 = %@", n2); // n2 = 0.0012
如何让格式化程序按预期返回0.12?
编辑:似乎只有格式化程序首先失败才会发生。如果格式化程序没有失败,则按预期返回0.12。奇怪。
答案 0 :(得分:3)
答案 1 :(得分:0)
这是一个似乎对我有用的解决方法:
我将NSNumberFormatter子类化并实现了以下方法。似乎为我工作。
- (NSNumber *)numberFromString:(NSString *)string {
NSNumber *retValue = [super numberFromString:string];
if ([self numberStyle] == NSNumberFormatterPercentStyle) {
[super setNumberStyle:NSNumberFormatterPercentStyle];
}
return (retValue);
}
- (NSString *)stringFromNumber:(NSNumber *)number {
NSString * str = [super stringFromNumber:number];
if ([self numberStyle] == NSNumberFormatterPercentStyle) {
[super setNumberStyle:NSNumberFormatterPercentStyle];
}
return (str);
}