从double转换为int - 在Visual C ++ / CLI中警告

时间:2011-07-20 17:03:29

标签: visual-c++ c++-cli compiler-warnings

我有一个C ++ / CLI中的双重属性我需要强制转换为整数,但编译器在我这样做时会给出警告(c4244)。例如:

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

我理解编译器不满意因为double可能比int更大,但是这个特定的控件保证是1到10之间的值,所以 I 知道它会好的。我能以某种方式消除这种警告吗?

1 个答案:

答案 0 :(得分:2)

编译器警告你不仅可能会超出范围,而且可能会丢失信息(它需要以某种方式对数字进行舍入,并且害怕自己完成)。

使用floor()告诉您,您知道自己在做什么:

int newValue = floor(control->Value); 

或者你可以明确地演示只是为了告诉编译器没有任何隐含的内容,你知道你在做什么:

int newValue = (int)(float)(control->Value);