J'aimerais arrondir le nombre entier au centième le plus proche à des fins monétaires, comment est-ce possible en Swift ?
Exemple : 1397968 devient 1397900
J'aimerais arrondir le nombre entier au centième le plus proche à des fins monétaires, comment est-ce possible en Swift ?
Exemple : 1397968 devient 1397900
Si vous voulez arrondir vers le bas à un multiple de 100, vous pouvez alors le faire avec (comme l'a dit @vadian dans un commentaire) :
let amount = 1397968
let rounded = amount/100 * 100
print(rounded) // 1397900
Cela fonctionne parce que la division entière tronque le résultat vers zéro : amount/100
s'évalue à 13979
et en multipliant par 100 donne à nouveau 1397900
.
Mais vous avez demandé la le plus proche multiple de 100 pour un nombre entier donné, et cela peut être fait avec une petite modification :
let amount = 1397968
let rounded = (amount + 50)/100 * 100
print(rounded) // 1398000
pour non négatif entiers. Si vous avez des valeurs positives et négatives alors Réponse de @shallowThought est probablement le plus simple la plus facile à mettre en œuvre. Mais il peut peut également être réalisée avec une arithmétique pure sur les nombres entiers (en utilisant l'approche de Arrondir Int à la valeur la plus proche ) :
func roundToHundreds(_ value: Int) -> Int {
return value/100 * 100 + (value % 100)/50 * 100
}
roundToHundreds(123) // 100
roundToHundreds(188) // 200
roundToHundreds(-123) // -100
roundToHundreds(-188) // -200
Cela fonctionne pour l'ensemble des Int
:
roundToHundreds(Int.max) // 9223372036854775800
roundToHundreds(Int.min) // -9223372036854775800
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.