C++11 向量的初始化<;浮动>;统一初始化期间出错

C++11 向量的初始化<;浮动>;统一初始化期间出错,c++11,C++11,当我在Visual Studio 2015中编译此文件时,我收到一个错误:错误C2398:元素“1”:从“double”到“float”的转换需要进行窄化转换 vector<float> v {2.46, 2.58, 2.0, 2.25, 3.0 }; 向量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, (floa

当我在Visual Studio 2015中编译此文件时,我收到一个错误:错误C2398:元素“1”:从“double”到“float”的转换需要进行窄化转换

vector<float> v {2.46, 2.58, 2.0, 2.25, 3.0 };
向量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 };
vectorv{(float)2.46,(float)2.58,(float)2.0,(float)2.25,(float)3.0};
这段代码是否有一个优雅的解决方案,这样我就不必将所有输入都封装为浮点?
也许是在调整初始值设定项列表?

无耻地从以下地方窃取评论:

向量v{2.46f,2.58f,2.0f,2.25f,3.0f}; 然后补充它,让它成为一个答案:

文本
0.42
的类型为double。要获得float类型的文本,您需要
f
后缀:
0.42f


你可以阅读更多关于和向量v{2.46f,2.58f,2.0f,2.25f,3.0f}的内容(嗯…没那么多)@igor tandetnik,您的评论应该是一个答案,因为它是正确的答案。2.46是double类型。use 2.46fit可能值得一提的是,double可以在很多地方隐式转换为float。但初始值设定项列表对有损(缩小)转换有更严格的规定。
vector<float> v {2.46f, 2.58f, 2.0f, 2.25f, 3.0f };