2016-06-21 48 views
3

當我在Visual Studio 2015編譯此我得到一個錯誤:錯誤C2398:元素「1」:由「雙」到「浮動」需要一個收縮轉換初始化向量<float>誤差的

vector<float> v {2.46, 2.58, 2.0, 2.25, 3.0 }; 
轉換

但這部作品

vector<float> v{ (float)2.46, (float)2.58, (float)2.0, (float)2.25, (float)3.0 }; 

有一種優雅的解決這個代碼,所以我不必情況,我的所有輸入浮動? 也許調整initializer_list?

+7

'矢量 V {2.46f,2.58f,2.0F,2.25f,3.0F};' –

+4

@igor -tandetnik,你的評論應該是一個答案,因爲它是正確的答案。 –

+1

2.46是double類型。使用2.46f – Thomas

回答

5

無恥地竊取評論從igor-tandetnik

vector<float> v {2.46f, 2.58f, 2.0f, 2.25f, 3.0f }; 

再補充它,使其答案:

字面0.42有double類型。要獲得float類型的文字,您需要f後綴:0.42f

你可以閱讀更多的(嗯,這不是那麼多)約integer literalsfloating point literals

+1

值得指出的是double可以在很多地方隱式轉換爲float。但是初始化程序列表對於有損(縮小)轉換具有更嚴格的規則。 – Arvid