如何在Swift中将Long Double转换为String

问题描述 投票:1回答:4

我想在Swift中打印数据Double,但输出总是4.444444444444e + 24,而不是实数。

我怎样才能做到这一点?

swift string double
4个回答
1
投票

在没有科学记数法的情况下更简单的格式化双打的方法是使用String(format: "%.0f", data)

请注意,Double无法正确保存44444444444444444.0,因此您可能会得到像44444444444444448这样的输出。

要获得正确的结果,您应该使用NSDecimalNumber,如下所示:

let decimalNumber = NSDecimalNumber(string: "44444444444444444.0")
print(decimalNumber.stringValue)

0
投票

看看这是否对您有帮助......此代码将数字从科学格式转换为普通格式

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let finalNumber = numberFormatter.number(from: "\(1e+07)")
print(finalNumber!)

结果如下:10000000


0
投票

@ Skytect的答案几乎是正确的。它只是缺少一步。请尝试以下代码

let data1 : Double = 44444444444444444.0
let data2 : Double = 1000000.0
let data3 = data1 * data2

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let num = NSNumber(value: data3)
let finalNumber = numberFormatter.string(from: num)
print(finalNumber!)

0
投票

更多Class和Class func方式

class Formatter {
  static let numberFormatter: NumberFormatter = {
    $0.minimumFractionDigits = 0
    $0.maximumFractionDigits = 1
    return $0
  }(NumberFormatter())

  class func string(from double: Double) -> String {
    let nsNumber = NSNumber(value: double)
    guard let formattedString = numberFormatter.string(from: nsNumber) else { fatalError("Should never happen")  }
    return formattedString
  }
}

用法 UITextField.text = Formatter.string(from:double)

© www.soinside.com 2019 - 2024. All rights reserved.