Disons que j'en ai 43, je veux arrondir à 50
Autres exemples:
41 serait 50
26 serait 30
21 serait 30
57 serait 60
Je sais qu'il y a une fonction round (), mais je pense qu'elle arrondit avec un nombre plus petit si le nombre d'origine se termine par 5 et moins ...
Mon code:
int total = nomber1 + nomber2; int roundedTotal = 0; int control; if (total % 10 == 0) { control= 0; } else { control = roundedTotal - total ; }
Ne faites pas trop attention aux calculs. Tout ce dont j'ai besoin est de savoir comment arrondir le total au plus grand nombre se terminant par 0.
3 Réponses :
Arrondir le entier au plus grand entier le plus proche se terminant par 0
Tout ce dont j'ai besoin est de savoir comment je peux arrondir le total au plus grand nombre se terminant par 0.
Le code de OP est proche.
int round_greater_int0(int x) { int least_decimal_digit = x%10; // -10 < least_decimal_digit < +10 if (least_decimal_digit >= 0) { return x - least_decimal_digit + 10; // may overflow } return x - least_decimal_digit; }
round_greater_int0 (40)
-> 50. C'est ce que OP demande, mais je soupçonne ce n'est pas ce que veut OP.
double round (double)
est une fonction pour les mathématiques en virgule flottante, mieux vaut ne pas l'utiliser avec un problème d'entiers. De nombreux problèmes subtils.
En utilisant des entiers,
total = ((total + 9) / 10) * 10;
Par exemple, 40
donnerait 50
. Si 40
doit rester 40
total = ((total + 10) / 10) * 10;
Voici une solution utilisant des calculs simples et un if
.
total% 10
pour obtenir la différence par rapport au multiple immédiatement inférieur de 10.
par exemple: 22
-> 22% 10 = 2
22-2 + 10 = 30
. Si vous voulez que même les multiples de 10 soient convertis en multiple le plus élevé de 10
, déplacez simplement le calcul hors de la boucle if
.
int c = 2; int x = 18; int total = x + c; if(total % 10 != 0) { total = total - (total%10) + 10; } else { } console.log(total);
Veuillez jeter un coup d'œil à stackoverflow.com/questions/3407012/...
Indice: qu'arrivera-t-il au nombre si vous divisez par 10?
Quel résultat voulez-vous pour une entrée de 40?