我不知道以下想法是否可行来概括它,但我想将每个计算值四舍五入为100个单位。
示例:
double x;
int x_final;
...
if (x<400) x_final=400;
else if (x<500) x_final=500;
else if (x<600) x_final=600;
...
答案 0 :(得分:2)
要向上舍入,您可以使用:
x_final = ((int)x / 100 + 1) * 100;
答案 1 :(得分:1)
显而易见的解决方案是使用remquo
:
int
roundTo100( double x )
{
int results;
remquo( x, 100.0, &results );
return 100 * results;
}
你可能需要一个相当新的编译器,但是:
该函数已添加到C99,并添加到C ++与C ++ 11。根据
在平台上,您可能根本没有它,或者您可能只有它
将它放在<math.h>
中(但不在<cmath>
中)。如果是编译器
声称C ++ 11支持,你应该在<cmath>
中拥有它。但
在你看到它之前不要相信它;实际上没有编译器
支持C ++ 11到任何真实程度。在那里的平台上
支持C99(几乎包括所有Unix)
平台,以及Windows下的CygWin),它应该存在于
<math.h>
,无论如何。 (但它在Visual中不存在
工作室。)
缺乏此功能,如:
int
roundTo100( double x )
{
int results = round( x / 100 );
return 100 * results;
}
可能会成功。请注意这两个函数是圆的 略有不同。如果剩下的话,第一个是四舍五入 正好是50,第二是圆到均匀。第二个可能 可能由于划分而引入不准确(或 不是 - 我没有充分分析它以确保一种方式 或者其他)。
取决于x
的来源,舍入差异
或潜在的不准确可能不是问题。 (如果,为
例如,x
来源于一些物理测量
只有3位十进制数字的精确度,它可以是圆形的事实
当x
与某些1E14远离50时“不正确”
喜欢可能无关紧要。)
答案 2 :(得分:0)
ctry this:
#include <math.h>
...
x_final = ceil(x/100)*100;
答案 3 :(得分:0)
除以100(忽略余数),然后乘以100。
#include <iostream>
using namespace std;
int main() {
int val = 456;
int r = (val / 100) * 100;
cout << "r = " << r;
return 0;
}