如果它不是整数,则将 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
以检查它是否为整数,并使用条件将NumberFormatter
的minimumFractionDigits
属性设置为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 个十进制数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num
Swift - 按下按钮时,如果动画已经在播放,则将其重置为开始