c++11 - 统一初始化期间 vector<float> 错误的初始化

标签 c++11

当我在 Visual Studio 2015 中编译时出现错误:错误 C2398:元素“1”:从“double”到“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 };

这段代码是否有一个优雅的解决方案,这样我就不必将所有输入都设置为 float ? 也许调整 initializer_list ?

最佳答案

无耻盗取igor-tandetnik的评论:

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

然后补充它使其成为答案:

文字 0.42 的类型为 double。要获得浮点型文字,您需要 f 后缀:0.42f

您可以阅读更多关于 integer literals 的内容(好吧……没那么多)和 floating point literals

关于c++11 - 统一初始化期间 vector<float> 错误的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37947287/

相关文章:

c++ - 为什么专门化 type_trait 会导致未定义的行为?

c++ - 我可以强制默认特殊成员函数为 noexcept 吗?

c++ - 在数字中的特定数字处查找数字

c++ - 使用 boost 序列化 std::unordered_map < int, std::unordered_set<int>>

c++ - 如何为类 union 类编写析构函数

C++ 不允许我在初始化列表中使用其他构造函数

c++ - 带有 char const* 的可变参数模板

c++ - 为什么 C++ 概念返回类型要求是类型约束而不是原始类型?

c++ - 对同一原子变量混合放松访问和获取/释放访问如何影响同步?

C++ 为谓词和值重载 std::count_if()