我的代码:
#inlcude <math.h>
#include "draw.h" /*int draw(int x, int y)*/
draw(rintf(10 * x), rintf(8 * y));
我收到此警告:从“float”转换为“int”可能会改变其值。
我无法将draw
更改为 float ,因为我需要它来绘制点。所以四舍五入是不可避免的。有任何想法吗?
最佳答案
rintf
的返回类型是 float
,它会产生警告。您可以显式转换为 int
以抑制警告(即 (int) rintf(10 * x)
),或者您可以使用另一种舍入方式(例如,如果这些值已知为非负值,(int) (10.0f * x + 0.5f)
) 或 lrint
(最好来自 tgmath.h
),尽管它返回一个 long
,这可能会导致另一个警告,具体取决于您的编译器和设置。
关于从 ‘int’ 转换为 ‘float’ 可能会改变它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33462369/