java - 如何在 OpenCL 中将 int 转换为 float?

标签 java casting int opencl

我正在使用 OpenCL 用 Ja​​va 编写曼德尔布罗分形渲染器。在我的内核代码中,我需要将 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/

相关文章:

java - 我的语言翻译在谷歌浏览器和 IE 中不起作用

java - ScrollPane Java Swing 中的 GridbagLayout

android - 不明白 Android 中的 java.lang.ClassCastException 错误

string - Swift 中 Int 的前导零

java - TestNG 是否保证@BeforeSuite 方法在@BeforeTest 方法之前执行?

java复利与贡献公式

c++ - C++ 风格转换对性能的影响?

java - 为什么 Object obj = new Integer(2);字节 b = (byte) obj;在运行时导致 ClassCastException?

c++ - 逐行读取具有不同行长的整数

Mysql 将 int 转换为 MAC