4

次の方法で、正しい小数点記号を使用して 10 進数の説明を出力しようとしました。

NSString* strValue = @"9.94300";
NSDecimalNumber* decimalNumber = [NSDecimalNumber decimalNumberWithString: strValue];    
NSLocale* locale = [NSLocale currentLocale];
NSLog(@"%@", [locale localeIdentifier]);
NSLog(@"%@", [decimalNumber descriptionWithLocale: locale] );

出力は次のとおりです。

de_DE
9.943

小数点記号は「.」ではなく「,」にする必要があります。このロケールの場合。エラーはどこにありますか? ローカルに応じて正しい小数点記号を出力するにはどうすればよいですか?

4

2 に答える 2

3

@TriPhoenix: はい、iOS 5 を実行しています。

@Vignesh: どうもありがとうございました。iPhone の言語をドイツ語に設定すると、次のコードが機能するようになりました。

NSString* strValue = @"9.94300";
NSDecimalNumber* decimalNumber = [NSDecimalNumber decimalNumberWithString: strValue];    
NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior: NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
NSLog(@"%@", [numberFormatter stringFromNumber: decimalNumber] );

出力は次のとおりです。9,943

しかし今、私は別の問題を抱えています。iPhone の言語を英語に戻しても、出力は 9.943 ではなく 9,943 のままです。私は何か間違っていますか?

于 2012-02-02T06:43:11.553 に答える
1

これを使用できます:

NSLocale *locale = [NSLocale currentLocale];

float r = 50/100;

NSString *str = [NSString stringWithFormat:@"%.2f%%", r];
str = [str stringByReplacingOccurrencesOfString:@"." withString:[locale objectForKey: NSLocaleDecimalSeparator]];

出来た!

于 2012-08-06T04:40:33.453 に答える