Округление int до ближайшего большего int, заканчивающегося 0 (язык C) - PullRequest
1 голос
/ 22 марта 2019

Допустим, у меня есть 43, я хочу округлить его до 50

Больше примеров:
41 будет 50
26 будет 30
21 будетбыть 30
57 будет 60

Я знаю, что есть функция round (), но я думаю, что она округляется с меньшим числом, если исходное число заканчивается 5 и меньше ...

Мой код:

int total = nomber1 + nomber2;
int roundedTotal = 0;
int control;

if (total % 10 == 0) {
    control= 0;
} else {
    control = roundedTotal - total ;
}

Не обращайте слишком много внимания на расчеты.Все, что мне нужно, это знать, как я могу округлить всего до наибольшего числа, заканчивающегося на 0.

Ответы [ 3 ]

3 голосов
/ 22 марта 2019

Используя целые числа,

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

Например, 40 даст 50.Если 40 должно остаться 40

total = ((total + 9) / 10) * 10;
1 голос
/ 22 марта 2019

Вот решение, использующее простые вычисления и if.

  • Просто сделайте total % 10, чтобы получить разницу от сразу меньшего кратного 10. Например: 22 -> 22 % 10 = 2
  • Вычтите его из числа и добавьте10 к нему, чтобы получить ближайший старший кратный 10. 10. 1010 *.

Если вы хотите, чтобы даже кратные 10 были преобразованы в следующий наибольший кратный 10, просто переместите расчетиз цикла if.

int c = 2;
int x = 18;
int total = x + c;

if(total % 10 != 0) {
  total = total - (total%10) + 10;
}

else {
}

console.log(total);
1 голос
/ 22 марта 2019

Округление int до ближайшего большего int, заканчивающегося 0

Все, что мне нужно, это знать, как я могу округлить общее число до наибольшего числа, заканчивающегося на 0.

Код ОП близок.

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. Это то, о чем просит ОП, но я подозреваю, что это не то, чего хочет ОП.


double round(double) - это функция для математики с плавающей запятой, которую лучше не использовать с целочисленной задачей. Множество тонких вопросов.

...