簡體   English   中英

NSNumberFormatter與NSNumberFormatterPercentStyle的怪異

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM