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