我正在使用OpenCL用Java编写mandelbrot分形渲染器。在我的内核代码中,我需要将int
强制转换为float
。但是当我说printf("%d", sizeX, "\n%d", (float) sizeX, "\n\n");
(sizeX
是一个整数)时,我在控制台中得到以下结果:
512
0
确实,sizeX
应该是512,但是为了进行进一步的计算,我需要将其作为浮点数。有人知道为什么我尝试投射时总是变成0吗?
编辑:
我也尝试通过进行float fSizeX = 0.0f + sizeX
来进行转换,但这也没有用。
答案 0 :(得分:3)
该代码不会产生给定的结果。输出为512
,没有其他任何内容。
printf()
方法(以及format()
方法)也只有一个“格式指定”参数。您可能想要尝试这样的事情:
printf("%d\n%f\n\n", sizeX, (float) sizeX);
此外,%d
格式说明符还将在非InvaligArgumentException
/ int
值上抛出Integer
,所以我改用%f
。