Приведение от double к int - Предупреждение в Visual C ++ / CLI - PullRequest
2 голосов
/ 20 июля 2011

У меня есть свойство double в C ++ / CLI, которое мне нужно привести к целому числу, но компилятор выдает мне предупреждение (c4244), когда я делаю это. Например:

//"Value" is a double
int newValue = (int)(control->Value); //C4244

Я понимаю, что компилятор недоволен, потому что double может быть больше, чем может содержать int, но этот конкретный элемент управления может иметь значение от 1 до 10, поэтому I знаю, что все будет хорошо. Можно ли как-то устранить это предупреждение?

1 Ответ

2 голосов
/ 20 июля 2011

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

Используйте floor(), чтобы сообщить ему, что вы знаете, что делаете:

int newValue = floor(control->Value); 

Или вы можете явным образом привести приведение к компилятору, чтобы ничего неявного происходило, и вы знаете, что делаете:

int newValue = (int)(float)(control->Value); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...