ios - 快速将 Double 转换为科学记数法

标签 ios swift math nsnumberformatter

我正在尝试将给定的 double 转换为科学记数法,但遇到了一些问题。我似乎也找不到很多关于如何做的文档。目前我正在使用:

 var val = 500
 var numberFormatter = NSNumberFormatter()
 numberFormatter.numberStyle = NSNumberFormatterStyle.ScientificStyle
 let number = numberFormatter.numberFromString("\(val)")
 println(number as Double?) 
 // Prints optional(500) instead of optional(5e+2)

我做错了什么?

最佳答案

您可以设置 NumberFormatter 属性 positiveFormat 和 exponent Symbol 以根据需要格式化字符串,如下所示:

let val = 500
let formatter = NumberFormatter()
formatter.numberStyle = .scientific
formatter.positiveFormat = "0.###E+0"
formatter.exponentSymbol = "e"
if let scientificFormatted = formatter.string(for: val) {
    print(scientificFormatted)  // "5e+2"
}

更新:Xcode 9 • Swift 4

您还可以创建扩展以从数字类型获取科学格式的描述,如下所示:

extension Formatter {
    static let scientific: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.numberStyle = .scientific
        formatter.positiveFormat = "0.###E+0"
        formatter.exponentSymbol = "e"
        return formatter
    }()
}

extension Numeric {
    var scientificFormatted: String {
        return Formatter.scientific.string(for: self) ?? ""
    }
}

print(500.scientificFormatted)   // "5e+2"

关于ios - 快速将 Double 转换为科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31934088/

相关文章:

ios - 如何使用解析缓存策略

java - Java 中的开源排队论算法

iphone - 维护不同 View 将使用的网络连接的正确方法是什么?

ios - 如何跟踪使用 NSIndexPath 选择的单元格?

带有 AttributedTitle 的 IOS UIButton

ios - 旋转后获取正确的可读ContentGuide

objective-c - 保留 NSArray 中的元素

ios - "Computed property must have an explicit type"错误 : how to list files in Swift 2. x?

c++ - 在 C++ 中将整数提高到正整数幂的正确方法是什么?

php - 带项目组的背包方程式