计算双返科学记数法[重复]

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

这个问题在这里已有答案:

我正在使用两个双打来计算价格,但是当我输出时,它似乎将其作为科学记数法返回,就像1.785e-05一样。然而,这不是我打算如何确保这输出8小数而不是科学记数法?

let price = tickerObj.price ?? 0
let quantity = Double(self.activeTextField.text ?? "0") ?? 0
let value = quantity / price

topValueField.text = "\(value.rounded(toPlaces: 8))"

ROUND EXTENSION

extension Double {
    /// Rounds the double to decimal places value
    func rounded(toPlaces places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return (self * divisor).rounded() / divisor
    }
}
ios swift
1个回答
0
投票

数字本身作为科学记数法是正确的。如果要向用户显示格式化的数字,则它应为String。这是使用NumberFormatter的工作代码:

extension Double {
    /// Rounds the double to decimal places value
    func rounded(toPlaces places:Int) -> String? {
        let fmt = NumberFormatter()
        fmt.numberStyle = .decimal
        fmt.maximumFractionDigits = places
        return fmt.string(from: self as NSNumber)
    }
}

let price = tickerObj.price ?? 0
let quantity = Double(self.activeTextField.text ?? "0") ?? 0
let value = quantity / price

topValueField.text = "\(value.rounded(toPlaces: 8) ?? "Unknown")"
© www.soinside.com 2019 - 2024. All rights reserved.