从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。
答案 0 :(得分:1)
在您的代码中,除非int1
到int4
实际上是浮点数,否则您没有任何浮点类型,因此您的问题与您的代码无关。
至于问题本身,浮点到整数转换总是通过截断(丢弃小数部分)来进行。对于舍入,标准库具有许多函数,如floor
,ceil
,round
等,可以执行不同类型的舍入。
答案 1 :(得分:0)
任何C书都会向您解释“转换法”。 有很多“谷歌”材料可用
检查一下 http://www.cs.wfu.edu/~torgerse/Kokua/More_SGI/007-0701-150/sgi_html/ch05.html