我正在使用 OpenCL 用 Java 编写曼德尔布罗分形渲染器。在我的内核代码中,我需要将 int
转换为 float
。但是当我说 printf("%d", sizeX, "\n%d", (float) sizeX, "\n\n");
(sizeX
是int),我在控制台中得到以下结果:
512
0
事实上,sizeX
应该是 512,但为了进行进一步的计算,我需要它是一个 float 。有人知道为什么当我尝试转换它时它总是变成 0 吗?
编辑:
我还尝试通过执行 float fSizeX = 0.0f + sizeX
来转换它,但这也不起作用。
最佳答案
该代码不会产生给定的结果。输出将为 512
,没有任何其他内容。
printf()
方法(以及 format()
方法)只有一个“格式指定”参数。您可能想尝试这样的事情:
printf("%d\n%f\n\n", sizeX, (float) sizeX);
此外,%d
格式说明符会对非 int
/Integer
值抛出 InvaligArgumentException
,因此我用 %f
代替。
关于java - 如何在 OpenCL 中将 int 转换为 float?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55631162/