如果它不是整数,则将 Swift 格式化字符串具有 2 个十进制数字 [重复]

Posted

技术标签:

【中文标题】如果它不是整数,则将 Swift 格式化字符串具有 2 个十进制数字 [重复]【英文标题】:Swift Formatting String to have 2 decimal numbers if it is not a whole number [duplicate] 【发布时间】:2018-01-19 05:15:45 【问题描述】:

我有一个字符串,我想对其进行格式化,这样当它不是整数时,它会显示最多两位小数,但如果它是整数,则不应有小数位。

有没有更简单的方法可以快速执行此操作,还是我必须接受 if-else?

【问题讨论】:

请添加您所做的代码 【参考方案1】:

您可以扩展FloatingPoint 以检查它是否为整数,并使用条件将NumberFormatterminimumFractionDigits 属性设置为0,如果为真,则将其设置为2:

extension Formatter 
    static let custom: NumberFormatter = 
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        formatter.maximumFractionDigits = 2
        return formatter
    ()

extension FloatingPoint 
    var isWholeNumber: Bool  isNormal ? self == rounded() : isZero 
    var custom: String 
        Formatter.custom.minimumFractionDigits = isWholeNumber ? 0 : 2
        return Formatter.custom.string(for: self) ?? ""
    


游乐场测试:

1.0.custom    // "1"
1.5.custom    // "1.50"
1.75.custom   // "1.75"

【讨论】:

我从未见过这个问题,它已经关闭了。顺便说一句,他们都没有使用我在这里展示的方法。 是的,您的解决方案可能比其他解决方案更好,因此您可以将旧问题作为更好的解决方案来回答。因为旧问题被搜索得最多,所以这会更有帮助:) 欣赏答案,我不认为这是重复的,因为我实际上是在问是否有比必须进行任何计算更短的方法来完成它

以上是关于如果它不是整数,则将 Swift 格式化字符串具有 2 个十进制数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果一千或更多,则将数字格式化为 2.5K,否则为 900

2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num

Swift - 按下按钮时,如果动画已经在播放,则将其重置为开始

jQuery - 如果所有子元素都具有相同的类,则将附加类添加到页面上的另一个元素

检查字符串是不是遵循某种格式?

如何检查模块是不是安装在 Python 中,如果没有,则将其安装在代码中?