首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算双回科学表示法

计算双回科学表示法
EN

Stack Overflow用户
提问于 2017-12-18 21:07:09
回答 1查看 422关注 0票数 2

我是用两个双倍来计算价格的,但是当我输出时,它似乎以科学符号的形式返回给1.785e-05。然而,这不是有意的,我如何确保这个输出用8个小数,而不是科学符号?

代码语言:javascript
复制
let price = tickerObj.price ?? 0
let quantity = Double(self.activeTextField.text ?? "0") ?? 0
let value = quantity / price

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

圆扩展

代码语言:javascript
复制
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
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-18 21:24:01

这个数字本身作为科学符号是正确的。如果要向用户显示格式化的数字,则应该是字符串。下面是使用NumberFormatter的工作代码:

代码语言:javascript
复制
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")"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47876426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档