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
......这是我首先想到的。
请注意,这适用于Playground:
问题似乎只发生在通过Xcode启动的设备/模拟器上 (我在两个不同的macOS上测试 - 在我的工作场所和家中。)
有关正在发生的事情的任何想法?
答案 0 :(得分:14)
我有同样的问题,我通过下面的代码来解决它。希望它有用
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!
}
答案 1 :(得分:1)
回答我自己的问题:重新创建项目。 :\
该项目在Xcode 7 + Swift 2中启动,然后"迁移"到Xcode 8 + Swift 3(手动)。一定有问题。我不知道(我不想知道)。
这不是一个庞大的项目,所以我花了40分钟左右移动文件。如果这是一个很大的项目,我现在就是这样。
Xcode请
答案 2 :(得分:1)
我在模拟器中发生这种情况,原来这是我的方案设置中的一个错误。检查以下步骤:
答案 3 :(得分:0)
我认为您的设备语言设置为中文 这就是为什么¤符号显示为货币符号