我想在Swift中打印数据Double,但输出总是4.444444444444e + 24,而不是实数。
我怎样才能做到这一点?
在没有科学记数法的情况下更简单的格式化双打的方法是使用String(format: "%.0f", data)
请注意,Double无法正确保存44444444444444444.0
,因此您可能会得到像44444444444444448
这样的输出。
要获得正确的结果,您应该使用NSDecimalNumber
,如下所示:
let decimalNumber = NSDecimalNumber(string: "44444444444444444.0")
print(decimalNumber.stringValue)
看看这是否对您有帮助......此代码将数字从科学格式转换为普通格式
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let finalNumber = numberFormatter.number(from: "\(1e+07)")
print(finalNumber!)
结果如下:10000000
@ 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!)
更多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)