Шейдер DirectCompute: как избавиться от предупреждения X3205: «круглый» - PullRequest
0 голосов
/ 19 сентября 2019

В модели 5 вычислительных шейдеров у меня есть результат некоторых вычислений в значении с плавающей запятой двойной точности.Мне нужно присвоить значение целочисленной переменной, и я получаю предупреждение:

warning X3205: 'round': conversion from larger type to smaller, possible loss of data

Я понимаю предупреждение, но в моем случае во время выполнения значение с плавающей запятой никогда не превысит допустимого значения для целого числа.Код выдает ожидаемый результат, поэтому я хочу отключить это предупреждение для конкретной оскорбительной строки.

Я не знаю, как отключить конкретное предупреждение, и мне нравится писать код, который не выдает никаких предупреждений или, если они есть, они проверяются, чтобы определить, являются ли они ложной тревогой или нет.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 23 сентября 2019

Вы не предоставили свой код, и я предполагаю, что это было что-то в виде:

double doubleValue = 1.0;
int integer = round(doubleValue);

Если вы хотите подавить предупреждение и уверены, что данные, с которыми вы имеете дело, не будутЧтобы получить забавные результаты, вы можете привести double к float, прежде чем передать его round().

double doubleValue = 1.0;
int integer = round((float)doubleValue);

Эта форма не вызывает предупреждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...