Как бросить int в число с плавающей точкой в ​​OpenCL? - PullRequest
0 голосов
/ 11 апреля 2019

Я пишу фрактальный рендеринг Мандельброта на Java с использованием OpenCL.В моем коде ядра мне нужно привести int к float.Но когда я говорю printf("%d", sizeX, "\n%d", (float) sizeX, "\n\n"); (sizeX - это int), я получаю следующий результат в консоли:

512
0

И действительно, sizeX должно быть 512, но для того, чтобы сделать дальшерасчеты, мне нужно, чтобы это было число с плавающей запятой.Кто-нибудь знает, почему он всегда превращается в 0, когда я пытаюсь разыграть его?

РЕДАКТИРОВАТЬ: Я также пытался преобразовать его, выполнив float fSizeX = 0.0f + sizeX, но это тоже не сработало.

1 Ответ

3 голосов
/ 11 апреля 2019

Этот код не дает данный результат.Выходные данные будут 512 без каких-либо других данных.

Метод printf() (и метод format() тоже) имеет только один аргумент "форматирования".Возможно, вы захотите попробовать что-то вроде этого:

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

Кроме того, спецификатор формата %d выдаст InvaligArgumentException для значения, отличного от int / Integer, поэтому я использовал %f вместо.

...