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