我的目标是当第一个小数位大于或等于 5 时,将值添加到小数点前。
例如:
#include <iostream>
using namespace std;
int main()
{
float num = 0.5222f;
cout << (int)num << endl;
cin.get();
return 0;
}
我的预期结果是 1 而不是 0。我应该如何修改代码以获得预期结果?
我的目标是当第一个小数位大于或等于 5 时,将值添加到小数点前。
例如:
#include <iostream>
using namespace std;
int main()
{
float num = 0.5222f;
cout << (int)num << endl;
cin.get();
return 0;
}
我的预期结果是 1 而不是 0。我应该如何修改代码以获得预期结果?
如果您想将此值四舍五入为最接近的整数,您可以在将0.5
其转换为 int 之前添加:
float num = 0.5222f;
cout << (int)(num + 0.5);
或者,您可以使用<cmath>
标题中的以下功能之一:
double round (double x);
float roundf (float x);
long double roundl (long double x);
在C++11中,我们现在有了std::round,所以这可以正常工作:
std::cout << std::round(num) << std::endl;
还需要包括<cmath>
. 使用floor的非C++11方法:
std::cout << floor(num + 0.5) << std::endl;
如果您将 afloat
转换为 an int
,它会向零舍入,删除数字的小数部分。
你要做的就是roundf
先打电话。(round
对于双,roundf
对于浮动)
cout << (int)roundf(num) << endl;
我只是补充:
float num = 0.5222f;
cout << std::floor(num + 0.5);
这样,如果(例如)第一个数字> 3,您甚至可以决定四舍五入
float num = 0.3222f;
cout << std::floor(num + 0.7);
不知道有多大用处,但是....你可以!
试试 ceil 函数。它将 0.5 的数字四舍五入到十进制整数加 1。