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

String number with limited precision fraction digits in Swift

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

let numberFormatter = NumberFormatter()
numberFormatter.maximumFractionDigits = 2
numberFormatter.string(from: numberFormatter.number(from: "1234.534234")!)

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

您可以使用新的格式化方法并将精度分数长度指定为两个:

let decimal = Decimal(string: "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"

或者,如果您只对 string 感兴趣,而不考虑舍入等任何数字修改,您可以使用正则表达式去除不需要的字符

let string = "1234.5678"
let trimmedString = string.replacingOccurrences(of: "(\d+\.\d{2})\d.",
                                            with: "",
                                            options: .regularExpression)