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

时间:2019-03-22 01:02:29

标签: c rounding

假设我有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 ;
}

不要太在意计算。我需要知道的是如何将 total 取整为以0结尾的最大数字。

3 个答案:

答案 0 :(得分:3)

使用整数

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

例如40会给出50。如果40应该保留40

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

答案 1 :(得分:1)

  

将int舍入为以0结尾的最接近的int

     

我需要知道的是如何将总数取整到以0结尾的最大数字。

OP的代码接近了。

/platforms/ios/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m:513:52: error: no visible @interface for 'FBSDKApplicationDelegate' declares the selector 'openBridgeAPIRequest:useSafariViewController:fromViewController:completionBlock:

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


round_greater_int0(40)是用于浮点数学运算的函数,最好不要用于整数问题。许多细微的问题。

答案 2 :(得分:1)

这是一个使用普通计算和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);