如何在C ++中删除浮动剩余部分

时间:2017-07-15 09:49:00

标签: c++ floating-point

我想在保留其类型的同时删除浮动剩余物。

(即3.14159f应变为3.0f)

到目前为止我能做的是两次输入类型。

float f = 3.14159f;

float r = static_cast<float>(static_cast<int>(f));

这是正确的方法吗?或者有更简单的方法吗?

提前谢谢。

3 个答案:

答案 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