C语言 从浮点数转换为整型时,浮点数结果如何四舍五入为整数?



当从float转换为int时,float结果如何四舍五入到整数?

有时我在整数变量之间做一些复杂的算术运算(包括乘法、除法等),然后再把结果转换成整型。

的例子:

result = (int) ((int1 + int2) * int3 / int4);

有时结果会四舍五入到最接近的整数,有时结果会四舍五入到较低的整数,即使浮点结果更接近于上整数,有时结果会向上或向下四舍五入2个整数(即如果结果是-150.69,结果可能会= -149)。

在从float到int的转换中有一些规律,还是取决于情况?

提前感谢。


的例子:

int1 = 31;
int2 = -1366;
int3 = 50;
int4 = 1000;

结果应该是-66.75,但是返回的结果是-65。

在您的代码中,除非int1int4实际上是浮点数,否则您没有任何浮点类型,因此您的问题与您的代码无关。

对于问题本身,浮点数到整数的转换总是通过截断(丢弃小数部分)进行的。对于舍入,标准库有许多函数,如floorceilround等,可以执行不同类型的舍入。

相关内容

最新更新