获取长数字中的 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"
我有一些来自 api 的号码,如下所示:0.0000000092726851369802
如何获取 9 之前的最后一个 0 的索引(可以更改)并从那里计算 4 和 return 这些数字?所以它看起来像: 0.000000009272
return 仅在 0s
寻找 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"