在Swift中,将逗号和小数后零值添加到千后数字字符串中



嗨,我从后端API获取字符串类型的价格,我试图在千后放置逗号,在字符串后放置.00。如果字符串在小数点后有一些值,那么它应该像23,000.55那样显示该值,否则如果小数点后没有任何值,那么就想像23,000.00那样显示值。我如何制作这样的格式?我试过NumberFormatter,但当我运行应用程序时,它只在千后显示逗号,但在小数后不显示双零。这是我的代码,

let balanceValue = Double(price ?? "0.0")
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let formattedNumber = numberFormatter.string(from: NSNumber(value:balanceValue ?? 0.0))

当我打印这个值时,它显示的值是这样的,23,000。我希望它像这样显示,23,000.00

您可以使用minimumFractionDigits和maximumFractionDigits格式化显示的位数。

顾名思义,它设置了数字的最小和最大数量。在您的情况下,代码为:

let balanceValue = Double(price ?? "0.0")
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.minimumFractionDigits = 2
numberFormatter.maximumFractionDigits = 2
let formattedNumber = numberFormatter.string(from: NSNumber(value:balanceValue ?? 0.0))

print(formattedNumber)现在将输出23,000.00

/*此方法用于通过Sepator转换价格*/

class func convertPriceWithSeprator(_ price: Double) -> String{
let numberFormatter = NumberFormatter()
numberFormatter.groupingSeparator = ","
numberFormatter.groupingSize = 3
numberFormatter.usesGroupingSeparator = true
numberFormatter.decimalSeparator = "."
numberFormatter.numberStyle = .decimal
numberFormatter.maximumFractionDigits = 2
return numberFormatter.string(from: price as NSNumber)!
}

只需将numberFormatter.numberStyle更改为.currency即可。

最新更新