2012-02-01 18 views
4

我試圖輸出一個十進制數的描述,通過以下方式正確小數點分隔符:錯小數點分隔在iOS版

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

輸出是:

de_DE 
9.943 

小數分隔符應該是','而不是'。'對於本地區。錯誤在哪裏?如何根據本地輸出正確的小數點分隔符?

+0

看看這個http://stackoverflow.com/a/3949169/641062 – Vignesh 2012-02-01 09:58:51

+0

很迷惑。我假設你正在運行iOS 5(我可以重現這一點)?在4.3仿真器中,代碼運行良好,並按預期輸出9,943。這可能是一個錯誤... – 2012-02-01 12:19:57

+1

此外:NSNumber做正確的事情,而NSDecimalNumber不在iOS 5上。現在提交錯誤報告;-) [也許NSNumber是替代嗎?] – 2012-02-01 12:25:32

回答

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。我做錯了什麼?

+0

任何人都可以幫助,請? – Waterman 2012-02-03 13:11:43

+0

您想將「區域設置」設置爲德語以獲取逗號,而不是語言 – Olaf 2012-02-03 14:23:43

+0

我想根據iPhone的語言輸出數字的小數點分隔符,即如果iPhone設置爲德語,則爲「9,943」如果iPhone設置爲英語,則爲'9.943'。 – Waterman 2012-02-03 15:47:47

1

您可以使用此:

NSLocale *locale = [NSLocale currentLocale]; 

float r = 50/100; 

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

它的工作!

+0

爲了提高答案的質量,請包括您的帖子如何/爲什麼會解決問題。 – 2012-10-05 20:40:07