将 int 舍入到以 0 结尾的最接近的大 int(C 语言)



假设我有 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 结尾的最大数字。

使用整数,

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

例如,40会给50.如果40应该保持40

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

将 int 舍入到最接近的大 int,以 0 结尾

我所需要的只是知道如何将总数四舍五入到以 0 结尾的最大数字。

OP 的代码很接近。

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。 这是OP所要求的,但我怀疑这不是OP想要的。


double round(double)是浮点数学的函数,最好不要用于整数问题。 许多微妙的问题。

这是一个使用普通计算和if的解决方案。

  • 只需执行一个total % 10即可从 10 的直接较小的倍数中获得差异。 例如:22->22 % 10 = 2
  • 从数字中减去它并加 10 以获得最接近的更高倍数 10。22- 2 + 10 = 30.

如果您甚至希望将 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);

最新更新