尽管看起来很奇怪,但我找不到如何干净地将 a 转换float
为int
.
这种技术
int int_value = (int)(float_value + 0.5);
触发一个
warning: use of old-style cast
在 gcc 中。
那么,将 a 转换为 a 的现代风格的简单方法float
是int
什么?(我当然接受精度的损失)
尽管看起来很奇怪,但我找不到如何干净地将 a 转换float
为int
.
这种技术
int int_value = (int)(float_value + 0.5);
触发一个
warning: use of old-style cast
在 gcc 中。
那么,将 a 转换为 a 的现代风格的简单方法float
是int
什么?(我当然接受精度的损失)
正如乔希在评论中指出的那样,+ 0.5
不是很可靠。为了获得额外的安全性,您可以将 astatic_cast
与std::round
这样的组合:
int int_value = static_cast<int>(std::round(float_value));
对于铸造部分,请参阅这篇出色的帖子以获得解释。
尝试:
int int_value = static_cast<int>(float_value + 0.5);
仅供参考: C++ 中的不同类型转换很好地解释了 C++ 中引入的这 4 种类型转换。
你也可以考虑
int int_value = boost::lexical_cast<int>(float_value);
lexical_cast 具有适用于所有原始类型和 stl 字符串等的好处。这也意味着您不必做 (float_value + 0.5) 的东西。