在 C 中没有 floor 函数的情况下将浮点数向下舍入为整数值
Rounding down a floating point number to an integer value without a floor function in C
我需要用 C 编写一个函数,将浮点数向下舍入为整数。例如,10.6 变为 10。22.1249 变为 22。但是,我不能使用 floor 函数。这能做到吗?
楼层
使用整数转换来向下舍入浮点数。
float yourFloat = 10.5;
int down = (int)yourfloat; //down = 10.
最接近的整数
要舍入到最接近的整数,请将 0.5f
添加到浮点数,然后进行转换。
float f1 = 10.3, f2 = 10.8;
int i1, i2;
i1 = (int)(f1 + 0.5f); //i1 = 10
i2 = (int)(f2 + 0.5f); //i2 = 11
天花板
要向上舍入数字,请使用带有一些强制转换的 if 语句:
int result = (int)yourFloat;
if (yourFloat - (int)yourFloat > 0) {
result++;
}
我需要用 C 编写一个函数,将浮点数向下舍入为整数。例如,10.6 变为 10。22.1249 变为 22。但是,我不能使用 floor 函数。这能做到吗?
楼层
使用整数转换来向下舍入浮点数。
float yourFloat = 10.5;
int down = (int)yourfloat; //down = 10.
最接近的整数
要舍入到最接近的整数,请将 0.5f
添加到浮点数,然后进行转换。
float f1 = 10.3, f2 = 10.8;
int i1, i2;
i1 = (int)(f1 + 0.5f); //i1 = 10
i2 = (int)(f2 + 0.5f); //i2 = 11
天花板
要向上舍入数字,请使用带有一些强制转换的 if 语句:
int result = (int)yourFloat;
if (yourFloat - (int)yourFloat > 0) {
result++;
}