Swift 敏捷的如何设置自定义数字格式?带有空格thouthand分隔符和点后两位数字

Swift 敏捷的如何设置自定义数字格式?带有空格thouthand分隔符和点后两位数字,swift,string,formatting,format,nsnumberformatter,Swift,String,Formatting,Format,Nsnumberformatter,我需要带空格的单独THOUTHAND,点后两位数字 let d1: Double = 20000000.0 let d2: Double = 1.2345 我想看看: let s1 = String(format: "????", d1) //20 000 000.00 let s2 = String(format: "????", d2) //1.23 怎么做?让d1:Double=20000000.0 设d2:Double=1.2345 let formatter=NumberForma

我需要带空格的单独THOUTHAND,点后两位数字

let d1: Double = 20000000.0
let d2: Double = 1.2345
我想看看:

let s1 = String(format: "????", d1) //20 000 000.00
let s2 = String(format: "????", d2) //1.23
怎么做?

让d1:Double=20000000.0
设d2:Double=1.2345
let formatter=NumberFormatter()
formatter.groupingSeparator=“”
formatter.numberStyle=.decimal
formatter.minimumFractionDigits=2
formatter.maximumFractionDigits=2
formatter.decimalSeparator=“.”//默认分隔符依赖于当前本地。
打印(formatter.string(for:d1))//20000.00
print(formatter.string(for:d2))//1.23

显然您已经知道NumberFormatter–那么问题到底出在哪里?你检查过它的各种属性和方法来控制小数位数和千位分隔符吗?我搜索了这个问题。我可以用空格分开这些人,或者在点后限制两位数,但要分开。我需要将这两种情况合并为一种情况。然后您的问题应该是:“它尝试了这个…和那个…结果是…,但不是…如预期的那样。”请注意,这将根据用户的区域设置更改小数分隔符。如果总是希望它是一个点(.),最好将区域设置为
formatter.locale=locale(标识符:“en_US\u POSIX”)
无需初始化新的
NSNumber
对象。您可以使用
Formatter
`s方法
string(for:Any)
formatter.string(for:d1)
多亏了你们,我更新了答案@JoakimDanielson我使用了
decimalSeparator
属性,而不是创建一个新的
Locale
来强制使用分隔符样式。