Avec des nombres comme 499, 73433, 2348, quelle VBA puis-je utiliser pour arrondir à 5 ou 10 près? ou un nombre aléatoire?
Par 5:
499 -> 500
2348 -> 2350
7343 -> 7345
Par 10:
499 -> 500
2348 -> 2350
7343 -> 7340
etc.
Avec des nombres comme 499, 73433, 2348, quelle VBA puis-je utiliser pour arrondir à 5 ou 10 près? ou un nombre aléatoire?
Par 5:
499 -> 500
2348 -> 2350
7343 -> 7345
Par 10:
499 -> 500
2348 -> 2350
7343 -> 7340
etc.
Réponse intégrée
X = 1234 'number to round
N = 5 'rounding factor
round(X/N)*N 'result is 1235
Pour un nombre à virgule flottante compris entre 1234.564 et 1235 (ceci est spécifique à VB, la plupart des autres langues sont simplement tronquées):
int(1234.564) 'result is 1235
Attention: VB utilise [banquier] [1], au nombre pair le plus proche, ce qui peut surprendre si vous ne le connaissez pas:
msgbox round(1.5) 'result to 2
msgbox round(2.5) 'yes, result to 2 too
Merci tout le monde.
En VB, les maths.tour a des arguments supplémentaires pour spécifier le nombre de décimales et de la méthode d'arrondi. Les mathématiques.Round(10.65, 2, MidpointRounding.AwayFromZero) sera de retour 10.67 . Si le nombre est un nombre décimal ou un seul type de données, les maths.round retourne un type de données décimal. Si elle est double, il retourne le type de données double. Qui peut être important si option strict est sur.
Le résultat de (10.665).ToString("n2") des tours à l'écart de zéro à donner "10.67". sans autres arguments mathématiques.round retourne 10.66, ce qui pourrait conduire à des indésirables les écarts.
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.