1

UITextFieldのテキストを解析して、パーセンテージに変換する必要があります。理想的には、ユーザーがテキストフィールドに12%または12%のようなものを入力し、それをパーセンテージとして数値に解析してもらいたいと思います。

これが変なところです。数値フォーマッタは12が好きではないようで、12%を100ではなく10000で割っているようです。

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 に答える