【发布时间】:2026-01-14 20:40:01
【问题描述】:
似乎在 iOS 13 中它改变了 NSNumberFormatter 显示数字的方式。 之前在 iOS 12 中,将区域格式设置为哥伦比亚,对于 12.00 的数字,它会显示为 12,这是正确的。 但是现在在 iOS 13 中,它显示为 12,00,这是不正确的,因为在哥伦比亚它不应该在 12 的后面显示 ,00。 知道 iOS 13 中发生了什么变化以及我们如何解决这个问题吗?
这是我的代码。谢谢!
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setCurrencySymbol:@""];
NSString *floatString = [NSString stringWithFormat:@"%.2f", floatValue];
NSDecimalNumber* number = [NSDecimalNumber decimalNumberWithString:floatString];
NSString *numberString = [formatter stringFromNumber:number];
NSLog(@"%@", numberString");
更新:更新至 iOS 13.2 后,此问题消失。
【问题讨论】:
-
我将您的代码放入一个简单的 Objective-C 项目并在 iOS 13.2 下运行它,我得到一个简单的
12用于输出。我将格式化程序的语言环境设置为es_CO以模拟在哥伦比亚。 -
但是在iOS12中,格式化器的locale不需要设置为es_CO,应该是自动的。
-
我需要将语言环境设置为 es_CO 以进行测试,因为这不是我的默认语言环境。
-
明白这一点,但这段代码的目的是每个人都应该根据他们的 iPad 区域设置以自己的格式查看他们的货币。如果我们必须手动设置语言环境,那就达不到目的了。
-
这似乎与iOS 13.1有关,更新到13.2后问题消失了。感谢您的帮助。
标签: objective-c ios13 nsnumberformatter