2013-06-04 71 views
0

我在我的生活中第一次使用Visual Studio 2010作爲學校作業......迄今爲止它非常簡單,但我遇到了麻煩將'double'轉換爲'int'。據我所知,這兩個trunc()round()沒有在VS2010工作,但是我不知道我還能怎麼辦這個....這裏是我的代碼:在VS2010中從'double'轉換爲'int'C++

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

我知道這些只是警告,但我的代碼仍然失敗...有沒有其他解決方法呢?

+0

這甚至不應該編譯可言,那是什麼'double'到的'='在那裏做的_right_? –

+0

爲什麼你在這個計算中使用浮點數?使用int可以很好。 –

+0

如果我離開它,我會得到以下錯誤:錯誤C2668:'floor':對超載函數'....'的模糊調用可能是'long double floor(long double)或'float floor(float)'或'雙層(雙層)' – accraze

回答

3

如果將double轉換爲int,那麼總會有數據丟失,這是警告的意思。既然你知道這確實是期望的結果,你可以忽略警告。 但是,你應該使用

static_cast<int>(q) 

,而不是僅僅(int)q;

+0

很酷這有幫助....謝謝! – accraze

相關問題