[英]NSNumberFormatter weirdness with NSNumberFormatterPercentStyle
我需要解析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。 奇怪。
已知錯誤 。
這是一個似乎對我有用的解決方法:
我將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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.