从“float”转换为“int”可能会改变它的价值

Conversion to ‘int’ from ‘float’ may alter its value

我的代码:

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

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

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

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

rintf 的 return 类型是 float,它会产生警告。您可以显式转换为 int 以抑制警告(即 (int) rintf(10 * x),或者您可以使用另一种舍入方式(例如,如果已知值是非负的,(int) (10.0f * x + 0.5f)) 或 lrint(最好来自 tgmath.h),尽管它 return 是一个 long,根据您的编译器和设置可能会导致另一个警告。