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)
将 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)