将String转换为Double,然后再转换回String

时间:2017-10-16 20:15:08

标签: ios swift uilabel currency

问题是我的API响应将 orders [indexPath.row] .price 作为String返回。该字符串实际上是一个双值,如3.55973455234。我需要将此值转换为类似于3.56的值并显示在UI标签中。从早上起我一直在拉头发来实现这一目标。为什么Swift在转换时如此可怕?

        cell.lblPayValue.text = orders[indexPath.row].price

3 个答案:

答案 0 :(得分:1)

就这样做:

let formatter = NumberFormatter()
formatter.numberStyle = .currency

if let price = Double(orders[indexPath.row].price), let formattedPrice = formatter.string(for: price) {
    cell.lblPayValue.text = formattedPrice
}
  1. 因此,您首先使用if-let
  2. 获取double值
  3. 然后您使用它来设置cell.lblPayValue.text
  4. 您使用格式化程序在Double
  5. 上获取货币格式

答案 1 :(得分:1)

您也可以使用 NumberFormatter ,但您需要将其转换回NSNumber ...

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.locale = Locale(identifier: "en_US")

if let number = formatter.number(from: orders[indexPath.row].price) {
    cell.lblPayValue.text = formatter.string(from: number)
}

但请不要创建N NumberFormatter。创建一个并将其存储在某个地方。

答案 2 :(得分:1)

转换非常简单恕我直言。您可以使用带字符串的初始化程序创建一个新的Double。然后你有一个可选的Double。然后可以将其转换为格式化的String。所以......

    let price: String = "3.55973455234" // your price
    let text = String(format: "%.2f", Double(price)!)
    print(text) // prints 3.56