【问题标题】:How to cast an int to a float in OpenCL?如何将 int 转换为 OpenCL 中的浮点数?
【发布时间】:2019-04-11 11:12:49
【问题描述】:

我正在使用 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 进行转换,但这也没有用。

【问题讨论】:

  • 你能提供确切的代码不工作吗?
  • @PavelSmirnov 我有一个函数可以将整数转换为 float4 以获得更高的精度inline float4 qfAssignInt(int value) { return (float4)((float) value, 0.0f, 0.0f, 0.0f); }

标签: java casting int opencl


【解决方案1】:

该代码不会产生给定的结果。输出将是512,没有其他任何内容。

printf() 方法(以及format() 方法)只有一个“格式指定”参数。你可能想尝试这样的事情:

printf("%d\n%f\n\n", sizeX, (float) sizeX);

此外,%d 格式说明符会在非 int/Integer 值上抛出 InvaligArgumentException,所以我改用 %f

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2010-11-05
    • 2020-07-28
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多