【问题标题】:Add + sign in front of positive % change在正百分比变化前面添加 + 号
【发布时间】:2018-06-08 09:45:38
【问题描述】:

我正在从 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)
    }
}

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

【问题讨论】:

    标签: ios swift string symbols


    【解决方案1】:

    这就是 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)    // ٠٫٩٨ ٪؜+
    

    【讨论】:

    • formatter.string(for: value) 不强制转换为 NSNumber。
    • 我知道我需要更加努力地学习文档;我不敢相信它不在里面。固定。
    • 哦……对……没有按照文档直到 Formatter 超类。再次感谢。
    【解决方案2】:

    当值为正时,您可以简单地使用三元运算符将字符串格式更改为"+%.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%

    【讨论】:

    • 非常感谢大卫,这似乎就是我要找的。如何将从 API 获取的值传递给let percentChange?当我尝试let percentChange = bitcoinInfo.percentChange24h时,我得到Binary operator '>' cannot be applied to operands of type 'String' and 'Int'
    • @Wizzardzz 检查我更新的答案,因为您的问题中没有包含bitcoinInfo.percentChange24h 的类型,我不知道它是String,但我已经更新了我的答案包括从StringDouble 的转换。您只需将 bitcoinInfo.percentChange24h 替换为警卫声明中的 percentChangeString
    【解决方案3】:

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

    还有:http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html

    【讨论】:

    • 这比三元运算符方法要好,尽管它还没有本地化。例如。在德国或法国,他们希望看到“+0,98 %”,而不是“+0.98%”,例如 NumberFormatter 提供的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多