1
votes

Arrondir int au plus grand int le plus proche se terminant par 0 (langage C)

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 commentaires

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?


3 Réponses :


1
votes

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.


0 commentaires

3
votes

En utilisant des entiers,

total = ((total + 9) / 10) * 10;

Par exemple, 40 donnerait 50 . Si 40 doit rester 40

total = ((total + 10) / 10) * 10;


0 commentaires

1
votes

Voici une solution utilisant des calculs simples et un if .

  • Effectuez simplement un total% 10 pour obtenir la différence par rapport au multiple immédiatement inférieur de 10. par exemple: 22 -> 22% 10 = 2
  • Soustrayez-le du nombre et ajoutez-y 10 pour obtenir le multiple supérieur le plus proche de 10. 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);


0 commentaires