2016-06-21 20 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