我需要解析UITextField中的一些文本,并将其变成百分比。理想情况下,我希望用户在文本字段中输入类似12或12%的东西,并将其作为百分比解析为数字。NSNumberFormatter怪异与NSNumberFormatterPercentStyle
这是什么奇怪。数字格式似乎不喜欢12,似乎通过10000,而不是100分的12%:
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。奇怪。
谢谢。哇,几乎两年前找到了。有点令人惊讶的是,像这样的错误还没有得到修复,因为它会严重影响金融系统。 – rein 2010-04-04 13:40:45
@rein:我认为这个问题是因为这个错误发生在Apple,但ICU。 NSNumberFormatter只是ICU UNumberFormat的前端。 (当然,我们可以责怪苹果使用ICU的古老版本(4.0)。) – kennytm 2010-04-04 13:43:45
感谢您的澄清。我已经解决了这个问题。 – rein 2010-04-04 13:57:20