我正在尝试格式化一个从1000到$1000.00或12.99到$12.99或100到$100.00的数字(等等)

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let formattedNumberTotalCost = numberFormatter.string(from: NSNumber(value:self.itemCost))
//return 1,000
let totalCostStringLeft = String(format: "$%.02f", formattedNumberTotalCost!)
//returns 0.00 SHOULD return $1,000.00
leftui.text = totalCostStringLeft
//shows 0.00

我在这里做错什么了?

最佳答案

只需在这里提供一个完整的答案,NumberFormatter就可以满足您的所有需求—您只需要告诉它将字符串格式化为货币。
更改:

numberFormatter.numberStyle = .decimal

致:
numberFormatter.numberStyle = .currency

工作完成了。将赋值拖放到totalCostStringLeft并赋值
leftui.text = formattedNumberTotalCost

你的答案不起作用,因为它试图将两种将数字格式化为字符串的方法结合起来。特定错误是使用了格式化字符串%f,然后在需要浮点值的地方传递字符串。

关于ios - Swift NumberFormat返回0.00,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58229048/

10-11 14:42