0

例如,如何根据对象 C.. 中的值向上或向下舍入数字。

假设数字是 143 - 我想四舍五入到 140,但如果数字是 146 - 我想四舍五入到 150

有什么建议么?

4

6 回答 6

7

假设145应该四舍五入到150(这是科学技术的标准),公式是:

x_rounded = ((x + 5)/10)*10;

更一般地说,当四舍五入到最接近的 n 时,它是

x_rounded = ((x + n/2)/n)*n;

它来自整数除法总是向下舍入的事实。

对于负数,它稍微复杂一些。

编辑:还假设它都是整数。使用浮点数/双精度数时,最好使用 C 数学库,因为除法的工作方式不同。像这样:

#include <math.h>

x_rounded = floor((x+5)/10) * 10;
于 2012-06-15T20:00:42.483 回答
1

将值 x 舍入为精度 p,其中 0 < p < 无穷大。(例如 p=0.25, 0.5, 1, 2, 3, 10,…)

float RoundTo(float x, float p)
{
  float y = 1/p;
  return int((x+(1/(y+y)))*y)/y;
}
float RoundUp(float x, float p)
{
  float y = 1/p;
  return int((x+(1/y))*y)/y;
}
float RoundDown(float x, float p)
{
  float y = 1/p;
  return int(x*y)/y;
}
于 2016-08-05T09:50:11.480 回答
0

lround函数会将浮点数舍入到最接近的整数。通过将数字除以 10、四舍五入,然后乘以 10,您可以很容易地将其四舍五入到 10 的倍数。

在代码中:

10 * lround(x / 10.0);
于 2012-06-15T20:01:50.300 回答
0

我认为最简单的解决方案是包含 math.h 并使用 round() 函数。

于 2012-06-15T20:07:11.020 回答
0

要将浮点数舍入到附近的整数值,请查看 C 函数 floorf()、ceilf() 和 roundf()。

要将整数舍入到(比如说)最接近的十的倍数,Seva 给出的公式应该可以工作......

于 2012-06-15T20:17:20.610 回答
0

这绝对可以解决您的后顾之忧。

- (int) roundToNearest5:(int) value
{
        
   return (value+(5-(value%5));
        
}
于 2013-10-23T09:12:27.760 回答