Xcode 8.0 (8A218a) GM
目标:iOS 10 (Swift 3)
考虑以下代码:
let number = NSDecimalNumber(decimal: 22.4)
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
numberFormatter.locale = Locale.current
let result = numberFormatter.string(from: number)
print(result!)结果是:
¤22.40(我不知道¤是什么意思。)
但是,如果我初始化区域设置,如:
numberFormatter.locale = Locale(identifier: "en_US")其结果将是:
$22.40..。这也是我最初所期望的。
请注意,这在游乐场中起作用:

这个问题似乎只发生在通过Xcode启动的设备/模拟器上。
(我在两种不同的macOS上进行了测试--在我的工作场所和家里。)
对发生了什么有什么想法吗?
发布于 2016-09-12 23:46:11
回答我自己的问题:重新创建这个项目。*\
该项目从Xcode 7+ Swift 2开始,然后“迁移”到Xcode 8+ Swift 3(手动)。一定是出了什么问题。我不知道是什么(我也不想知道)。
这不是一个大项目,所以我花了大约40分钟来转移文件。如果那是个大项目,我现在已经.够了。
请用Xcode。
发布于 2017-01-31 05:15:06
我也有同样的问题,我用下面的代码来解决它。希望它有用
func formatCurrency(value: Double) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.maximumFractionDigits = 2
formatter.locale = Locale(identifier: Locale.current.identifier)
let result = formatter.string(from: value as NSNumber)
return result!
}发布于 2017-09-05 22:25:07
这是发生在我的模拟器,原来这是一个错误的方案设置。签出以下步骤:
https://stackoverflow.com/questions/39458003
复制相似问题