我對textfield有問題。這種情況在英語語言中可以正常工作。但是,如果設備語言更改爲法語(加拿大),則文本字段不會顯示小數點後的值。如何使用NSNumber獲取法語設備的十進制值?
英語:
I enter 99.99 and click Done. The text field display 99.99
法國:
I enter 99,99 and click Done . The text field display 99,00
這裏是我的代碼:
_amountField.text = [_amountField currencyFormatFromValue:[NSNumber numberWithDouble:_amountField.text.doubleValue]];
這裏[NSNumber numberWithDouble:_amountField.text.doubleValue]
部分是在英語和99的情況下返回99.99, 00在法國的情況下
-(NSString *)currencyFormatFromValue:(NSNumber *)value{
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.positiveFormat = @"###.00";
formatter.roundingMode = NSNumberFormatterRoundFloor;
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
[formatter setGroupingSeparator:groupingSeparator];
[formatter setUsesGroupingSeparator:YES];
[formatter setCurrencySymbol:@""];
[formatter setMinimumIntegerDigits:1];
NSString *formattedValue = [formatter stringFromNumber:value];
return formattedValue;
}
我不確定,爲什麼在double中轉換的法語文本是終止小數值。有任何想法嗎?
在將值發送給格式化程序之前,是否需要將文本轉換回英文?
你不應該設置任何比其他款式的數量格式的屬性。讓用戶的區域設置定義其他所有內容。 – rmaddy
我用分組分隔符來分隔總數值中的數百和數千。如果我只是使用數字樣式,它不會分隔數百和數千 –
只需使用'setUsesGroupingSeparator:'打開分組。你不應該設置實際的分隔符。 – rmaddy