我想在保留其类型的同时删除浮动剩余物。
(即3.14159f应变为3.0f)
到目前为止我能做的是两次输入类型。
float f = 3.14159f;
float r = static_cast<float>(static_cast<int>(f));
这是正确的方法吗?或者有更简单的方法吗?
提前谢谢。
答案 0 :(得分:7)
&#34>删除残羹剩饭的操作&#34;被称为截断。 C ++提供std::trunc
函数来执行它(包括<cmath>
标题):
float r = std::trunc(f);
答案 1 :(得分:3)
这是正确的方法吗?
没有
或者有更简单的方法吗?
一次演员就足够了:
float r = static_cast<int>(f);
同样@Baum mit Augen在comment中说:
“对于不适合
int
”的值
因此,使用std::trunc()
可以解决错误处理方面的问题。
答案 2 :(得分:-1)
这是一种正确的方法,但您也可以使用楼层:
std::cout << std::floor(3.14f); // prints 3