我正在尝试将int格式化为格式化字符串,例如23 - > " 0023",100 - > 0100等等。我已经完成了下面的功能,但它吃掉了10的倍数的每个数字的最后一位数字,比如900变为090而不是0900。 请帮我解决这个问题,谢谢。
func convert(_ score: Int) -> String {
return String(Float(score) / 1000.0).components(separatedBy: ".").joined()
}
答案 0 :(得分:7)
除以1000并依赖某个浮点表示是脆弱的,这是一个坏主意。
一个简单的解决方案是使用%ld
格式,最少4位数:
func convert(_ score: Int) -> String {
return String(format: "%04ld", score)
}
print(convert(23)) // 0023
答案 1 :(得分:6)
您可以使用minimumIntegerDigits
并将let nf = NumberFormatter()
nf.minimumIntegerDigits = 4
nf.locale = Locale(identifier: "en_US_POSIX") // Avoid thousands separator
nf.string(for: 23) //"0023"
nf.string(for: 90) //"0900"
设置为4来实现目标。
NumberFormatter
出于性能原因,您应该避免每次需要时重新创建It.IsAny<Dictionary<string, object>>()
实例,而是在范围内定义它(即通过使其成为相关类的实例/静态属性),以便它可以重复使用。