11

デバイスに設定されている小数点記号を取得したい。今まで私はこの方法を使用していました:

NSString *decimalSymbol;     
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];    
[f setNumberStyle:NSNumberFormatterDecimalStyle];   
[f setMinimumFractionDigits:2];     
[f setMaximumFractionDigits:2];     
[f setGroupingSeparator:@" "];      

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];    
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];   
[formatter setMinimumFractionDigits:2];     
[formatter setMaximumFractionDigits:2];     
[formatter setGroupingSeparator:@" "];      

NSRange range = {1,1};  

decimalSymbol = [[formatter stringFromNumber:[f numberFromString:[@"" stringByAppendingFormat:@"%.02f", 1.0f]]] substringWithRange:range];  

[formatter release];    
[f release];

別のデバイス(4.3)でテストしているときまでは正常に機能していましたnullが、返されます。何が問題なのですか?

小数点記号を取得する別の方法はありますか?

後で編集:
私は使用できます:

decimalSymbol = [[@"" stringByAppendingFormat:@"%.02f", 1.0f] substringWithRange:range];

しかし、なぜこの特定のデバイスで他の方法が機能しないのですか?

4

5 に答える 5

30
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
NSString *decimalSymbol = [formatter decimalSeparator];
于 2011-03-22T21:01:34.033 に答える
21

NSNumberFormatter最善の方法は、オブジェクトを初期化せずに現在のロケールから小数点記号を取得することです。このような:

[[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator]
于 2014-11-24T08:41:32.553 に答える
2

decimalSeparator

レシーバーが小数点を表すために使用する文字を含む文字列を返します。

- (NSString *)decimalSeparator

例:

decimalSymbol = [f decimalSeparator];

于 2011-03-22T21:01:43.763 に答える