0

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

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

例子:

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

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

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

提前致谢。


例子:

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

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

4

2 回答 2

1

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

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

于 2013-04-23T13:59:47.643 回答
0

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

看看这个 http://www.cs.wfu.edu/~torgerse/Kokua/More_SGI/007-0701-150/sgi_html/ch05.html

于 2013-04-23T14:04:31.803 回答