我有一个字符串,我想格式化,当它不是一个整数时,它将显示最多两位小数,但如果它是一个整数,则应该没有小数位。
有没有一种更简单的方法可以快速完成此操作,还是我必须选择if-else?
答案 0 :(得分:2)
您可以扩展FloatingPoint
以检查它是否为整数,并使用条件将minimumFractionDigits
的{{1}}属性设置为0,如果它是真的,否则将其设置为2:
NumberFormatter
游乐场测试:
extension Formatter {
static let custom: NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
return formatter
}()
}
extension FloatingPoint {
var isWholeNumber: Bool {
return isZero ? true : !isNormal ? false : self == rounded()
}
var custom: String {
Formatter.custom.minimumFractionDigits = isWholeNumber ? 0 : 2
return Formatter.custom.string(for: self) ?? ""
}
}