好的,所以我有一个带有数字字段的应用程序(值为0-9的按钮),用于更新格式化为本地货币的标签。 标签会自动为用户放置小数,因此格式为0.00。 现在这是一个问题,因为iphone将大多数其他货币(例如欧元)格式化为0,00。
有没有办法检测区域货币格式(设置>国际>区域格式)?
然后我会相应地制作一个if语句。
我目前的号码代码:
NSString *digit = sender.currentTitle;
numberField.text = [numberField.text stringByAppendingString:digit];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setGroupingSeparator:@""];
[numberFormatter setMaximumIntegerDigits:4];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setMaximumFractionDigits:2];
numberField.text = [numberField.text stringByReplacingOccurrencesOfString:@"." withString:@""];
NSDecimalNumber *currency = [[NSDecimalNumber decimalNumberWithString:numberField.text] decimalNumberByDividingBy: [NSDecimalNumber decimalNumberWithString:@"100"]];
numberField.text = [numberFormatter stringFromNumber:currency];
您可以在第11行看到它插入小数。当我将其更改为逗号时,0,00格式正常工作。
转换:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *string = [f stringFromNumber:[NSNumber numberWithFloat:[numberField.text floatValue]]];
numberField.text=string;
答案 0 :(得分:2)
------------------ EDIT ------------------
我相信@lnafziger可能有更有效的方法。除了NSLocaleDecimalSeparator
密钥之外,您还可能会发现NSLocaleGroupingSeparator
和NSLocaleCurrencySymbol
密钥非常有用。
希望这有帮助!
您可以使用:
NSString *locale = [NSLocale currentLocale] localeIdentifier];
if(locale isEqualToString: @"en_US"){
//Set Device Currency to American Dollars
}
else if(locale isEqualToString: @"fr_FR"){
//Set Device Currency to Euros
}
else if(locale isEqualToString: @"en_AU"){
//Set Device Currency to Australian Dollars
}
有关NSLocale
的详情,请参阅here。
希望这有帮助!
答案 1 :(得分:2)
要获取当前区域设置的小数点分隔符,请使用:
NSLocale *loc = [NSLocale currentLocale];
NSString *separator = [loc objectForKey:NSLocaleDecimalSeparator];
答案 2 :(得分:1)
要获取本地(来自用户定义的设置)货币US $或€,我使用此代码段:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *dec = [f stringFromNumber:[NSNumber numberWithFloat:100.01]];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *string = [f stringFromNumber:[NSNumber numberWithFloat:100.01]];
NSString *currency = [string stringByReplacingOccurrencesOfString:dec withString:@""];
currency = [currency stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"local currency:%@",currency);
答案 3 :(得分:0)
Iphone是一种 hnu985jmpl895662 方式格式。 所以答案是这样的;第4代与当前的discisenables7。 Lol Jk IDK
答案 4 :(得分:0)
这会将数字转换为本地货币字符串
[NSNumberFormatter localizedStringFromNumber:dec numberStyle:NSNumberFormatterCurrencyStyle]
;