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