[英]Using Swift ".formatted()" for decimals with trailing zeros removed?
我正在嘗試從雙打中刪除尾隨零,我看到的代碼與此類似。
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 0
formatter.maximumFractionDigits = 2
print(formatter.string(from: 1.0000)!) // 1
print(formatter.string(from: 1.2345)!) // 1.23
這需要您創建一個 NumberFormatter()。 我知道 Apple 最近推出了 new.formatted() function。 有誰知道是否可以使用這個新系統執行上述操作?
該文檔對我來說有點令人費解,但到目前為止我只看到了設置精度的能力。
let string = 1.00000.formatted(.number.precision(.fractionLength(2)))
// 1.00
您可以創建自己的FormatStyle
public struct DecimalPrecision<Value>: FormatStyle, Equatable, Hashable, Codable where Value : BinaryFloatingPoint{
let maximumFractionDigits: Int
public func format(_ value: Value) -> String {
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 0
formatter.maximumFractionDigits = maximumFractionDigits
return formatter.string(from: value as! NSNumber) ?? ""
}
}
extension FormatStyle where Self == FloatingPointFormatStyle<Double> {
public static func precision (maximumFractionDigits: Int) -> DecimalPrecision<Double> {
return DecimalPrecision(maximumFractionDigits: maximumFractionDigits)
}
}
然后使用它
let string = 1.00000.formatted(.precision(maximumFractionDigits: 2))
.precision
是你應該使用的,然后有一個.fractionLength
的變體,它以一個范圍作為參數,
10_000.123.formatted(.number.precision(.fractionLength(0…2)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.