Swift格式化字符串如果不是整数,则有2个十进制数字

时间:2018-01-19 05:15:46

标签: ios swift

我有一个字符串,我想格式化,当它不是一个整数时,它将显示最多两位小数,但如果它是一个整数,则应该没有小数位。

有没有一种更简单的方法可以快速完成此操作,还是我必须选择if-else?

1 个答案:

答案 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) ?? ""
    }
}