1

我需要解析 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。奇怪的。

4

2 回答 2

3

已知的错误

于 2010-04-04T13:30:08.117 回答
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);
}
于 2010-05-18T04:40:15.990 回答