从'float'转换为'int'可能会改变其值

时间:2015-11-01 12:56:22

标签: c floating-point int rounding c99

我的代码:

#inlcude <math.h>
#include "draw.h"  /*int draw(int x, int y)*/

draw(rintf(10 * x), rintf(8 * y));

我收到此警告:从'float'转换为'int'可能会改变其值。

我无法将draw更改为浮动,因为我需要它来绘制点数。因此舍入是不可避免的。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

rintf的返回类型为float,会产生警告。您可以显式转换为int以取消警告(即(int) rintf(10 * x),或者您可以使用其他舍入方式(例如,如果已知值为非负值,{{1} })或(int) (10.0f * x + 0.5f)(最好来自lrint),尽管它会返回tgmath.h,这可能会导致另一个警告,具体取决于您的编译器和设置。