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

时间:2013-04-23 13:54:41

标签: c type-conversion

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

有时我在整数变量之间进行了一些复杂的算术运算(包括乘法,除法等),并将结果再次转换为int。

示例:

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

有时候结果会四舍五入到最接近的整数,其他时候到较低的整数,即使浮动结果更接近上一个,有时相反,结果会向上或向下舍入2个整数(即结果是-150.69,结果可能会发生= -149)。

从float到int的转换中有一些法则还是取决于具体情况?

提前致谢。


示例:

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

结果应为-66.75但返回的结果为-65。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

任何C书都会向您解释“转换法”。 有很多“谷歌”材料可用

检查一下 http://www.cs.wfu.edu/~torgerse/Kokua/More_SGI/007-0701-150/sgi_html/ch05.html