浮点数的舍入小数

时间:2015-05-12 10:58:47

标签: c++ visual-c++ integer cocos2d-x-3.0

VC ++中的

我有一个浮点数,说1.32544354353 即float num=1.32544354353; 我只希望点后1位数。即1.3(不是1.300000000)。 我怎么能得到这个? 请帮我... 如果他们是Cocos2dx中的解决方案更好(我想在我的cocos2d-x游戏中使用它)

5 个答案:

答案 0 :(得分:1)

尝试类似

的内容
float val=1.32544;
float num=(float)(((int)(val*10))/10.0);

但要注意溢出。

答案 1 :(得分:1)

试试这个:

#include <math.h>

float x= 1.32544354353;
float f = roundf(x* 10) / 10;  

如果您只想打印它,那么您只需使用如下格式说明符:

("%.1f", 1.32544354353);

double d = 1.32544354353;
std::cout << std::fixed << std::setprecision(1) << d << std::endl;

答案 2 :(得分:1)

答案取决于您希望结果的类型。

如果您想以float获得结果,那么这是不可能的。从float的角度来看,1.3和1.300000000是完全相同的值,并且您不能拥有包含1.3的float,而不是1.300000000。你可以在这里做的是使用例如(int)(val*10)/10.0来删除额外的数字。 (但是,浮点数精度问题不会使结果精确到1.3,它将是行1.2999999982或1.3000000029,最后有一些随机数字。)

如果你想要一个字符串(通常是一个字符串)表示,那么你可以生成一个字符串 "1.3"。要获得此功能,请使用精度说明符 例如"%.1f"std::setprecision(1)

答案 3 :(得分:0)

我想到的第一件事就是你可以将它多重显示10(你会得到13)然后把它转换成int(所以没有更多的数字在点之后)然后将它除以10来浮动(你会得到1.3) )

答案 4 :(得分:-1)

char str[50];
sprintf(str, "%.1f",1.324567);

现在str有一个字符串1.3