在VS2010 C++中从"双精度"转换为"int"

conversion from 'double' to 'int' in VS2010 C++

本文关键字:转换 int 双精度 C++ 中从 VS2010      更新时间:2023-10-16

这是我人生中第一次使用Visual Studio 2010来完成学校作业....到目前为止,它很简单,但我遇到了麻烦,试图将'double'转换为'int'。我知道trunc()round()都不能在VS2010中工作,但我不确定我还能怎么做....下面是我的代码:

double q = double floor((p+r)/2);
q = (int) q;
mergeSort(v,p,q);
mergeSort(v,q+1,r);
merge(v,p,q,r);

我需要使变量q为int,以便与我的代码的其余部分一起工作…然而,浇注似乎没有工作,因为我得到这些错误:

warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data

我知道这些只是警告,但我的代码仍然失败…还有别的办法吗?

如果将double类型转换为int类型,则总是会丢失数据,这就是警告所要说明的。因为您知道这确实是想要的结果,所以可以忽略警告。但是,您应该使用

static_cast<int>(q)

代替(int)q;