获取长数字中的 x 个初始数字

Get x amount of initial digits in a long Number

我有一些来自 api 的号码,如下所示:0.0000000092726851369802

如何获取 9 之前的最后一个 0 的索引(可以更改)并从那里计算 4 和 return 这些数字?所以它看起来像: 0.000000009272 return 仅在 0s

之后的最后 4 个值

寻找 Swift 5 解决方案

@available(macOS 12.0, iOS 15.0, tvOS 15.0, watchOS 8.0, *)

您可以使用格式化的方法并将数字精度有效数字设置为四位:

let decimal = Decimal(string: "9.272685136e-9")!
decimal.formatted(.number.precision(.significantDigits(4)))  // "0.000000009273"

对于较旧的 iOS 版本,您可以创建自定义数字格式化程序,如下所示:


extension Formatter {
    static let significantDigits: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        formatter.usesSignificantDigits = true
        return formatter
    }()
}

extension Numeric {
    func maximumSignificantDigits(_ digits: Int = 4) -> String {
        Formatter.significantDigits.maximumSignificantDigits = digits
        return Formatter.significantDigits.string(for: self) ?? ""
    }
}

let decimal = Decimal(string: "9.272685136e-9")!
decimal.maximumSignificantDigits()  // "0.000000009273"