Formatage avec des chiffres de fraction maximum, sans zéros de fin
Ce scénario est bon lorsqu'une précision de sortie personnalisée est souhaitée. Cette solution semble à peu près aussi rapide que la solution NumberFormatter + NSNumber de MirekE , mais un avantage pourrait être que nous évitons NSObject ici.
extension Double {
func string(maximumFractionDigits: Int = 2) -> String {
let s = String(format: "%.\(maximumFractionDigits)f", self)
var offset = -maximumFractionDigits - 1
for i in stride(from: 0, to: -maximumFractionDigits, by: -1) {
if s[s.index(s.endIndex, offsetBy: i - 1)] != "0" {
offset = i
break
}
}
return String(s[..<s.index(s.endIndex, offsetBy: offset)])
}
}
(fonctionne également avec extension Float
, mais pas uniquement avec le type macOS Float80
)
Utilisation: myNumericValue.string(maximumFractionDigits: 2)
oumyNumericValue.string()
Sortie pour maximumFractionDigits: 2
:
1,0 → «1»
0,12 → «0,12»
0,012 → «0,01»
0,0012 → «0»
0,00012 → «0»