Swift 中具有有限精度小数位的字符串数字

Art*_*iom 1 string precision nsnumberformatter swift

将数字“1234.5678”转换StringNSNumber精度 -> 1234.56 并返回String“1234.56”的最快方法是什么。

let numberFormatter = NumberFormatter()
numberFormatter.maximumFractionDigits = 2
numberFormatter.string(from: numberFormatter.number(from: "1234.534234")!)
Run Code Online (Sandbox Code Playgroud)

这段代码看起来不太漂亮。有任何想法吗?

Leo*_*bus 5

您可以使用新的格式化方法并将精度小数长度的数量指定为 2:

let decimal = Decimal(
    sign: .plus,
    exponent: -4,
    significand: 12345678
)  // 1234.5678
decimal.formatted(.number.precision(.fractionLength(2))) // "1,234.57"
decimal.formatted(.number.grouping(.never).precision(.fractionLength(2)))  // "1234.57"
decimal.formatted(.number.grouping(.never).rounded(rule: .towardZero).precision(.fractionLength(2)))  // "1234.56"
Run Code Online (Sandbox Code Playgroud)