我是用两个双倍来计算价格的,但是当我输出时,它似乎以科学符号的形式返回给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))"圆扩展
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
}
}发布于 2017-12-18 21:24:01
这个数字本身作为科学符号是正确的。如果要向用户显示格式化的数字,则应该是字符串。下面是使用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")"https://stackoverflow.com/questions/47876426
复制相似问题