0

好的,所以我有一个带有数字字段(值为 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;
4

5 回答 5

2

- - - - - - - - - 编辑 - - - - - - - - -

我相信@lnafziger 可能有更有效的方法来做到这一点。除了NSLocaleDecimalSeparator键之外,您可能还会发现NSLocaleGroupingSeparatorNSLocaleCurrencySymbol键很有用。

希望这可以帮助!

你可以使用:

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,请参见此处

希望这可以帮助!

于 2012-06-08T00:24:43.587 回答
2

要获取当前语言环境的小数分隔符,请使用以下命令:

NSLocale *loc       = [NSLocale currentLocale];
NSString *separator = [loc objectForKey:NSLocaleDecimalSeparator];
于 2012-06-08T00:33:14.290 回答
1

要获取本地(来自用户定义的设置)货币美元或欧元,我使用以下代码段:

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);
于 2012-12-11T09:34:32.693 回答
0

iphone是hnu985jmpl895662方式格式。所以这个问题的答案是;具有当前 disisenables7 的第 4 代。大声笑 IDK

于 2013-04-12T14:55:26.873 回答
0

这会将数字转换为本地货币字符串 [NSNumberFormatter localizedStringFromNumber:dec numberStyle:NSNumberFormatterCurrencyStyle]

于 2014-01-24T03:08:55.213 回答