在正%变化前添加+符号

我从API中获取数据以显示在我的iOS应用程序中。 这些数据中的一些是百分比,因此当它为负时它显示为-0.98%,例如,没有问题,但为了清楚起见,我希望正变量显示为+0.98而不仅仅是0.98。

这是我更新标签时的代码:

func updateBitcoinUI(with bitcoinInfo: Bitcoin) { DispatchQueue.main.async { self.bitcoinPercentageChangeLabel.text = String(format: "%.2f%%", Double(bitcoinInfo.percentChange24h) ?? 0) } } 

当百分比为正时,有没有办法在字符串中添加+符号?

这就是NumberFormatter的设计目标。 使用此而不是硬编码格式将正确处理使用其他百分比和分隔符格式的语言环境中的本地化。 例如:

 var formatter = NumberFormatter() formatter.numberStyle = .percent formatter.positivePrefix = formatter.plusSign formatter.maximumFractionDigits = 2 let value = 0.0098 formatter.string(for: value) // +0.98% formatter.locale = Locale(identifier: "ar") // Arabic formatter.string(for: value) // ٠٫٩٨ ٪؜+ 

试试这个字符串格式表达式“%+。2f %%”

另外: http : //pubs.opengroup.org/onlinepubs/009695399/functions/printf.html

当值为正时,您可以简单地使用三元运算符将String格式更改为"+%.2f%%"

 let percentChangeString = "0.98" guard let percentChange = Double(percentChangeString) else { return } let percentString = percentChange > 0 ? String(format: "+%.2f%%", percentChange) : String(format: "%.2f%%", percentChange) 

输出:

+ 0.98%

对于-0.98的输入,输出为

-0.98%