我想取任意一个float数的小数点后的2位值,比如1.234,我要值1.230
有没有这样的库函数?如果没有该怎么做?我是这样做的
float a = 0.01;
float b = 1;
int c = (int)(a*100);//我watch等号右边的值是0.01没错,那就是我想要的这样做应该是不能了,这个我几乎明白了,那有哪为兄弟有别的好办法,或者直接给个函数也行,300了解这个小问题
有没有这样的库函数?如果没有该怎么做?我是这样做的
float a = 0.01;
float b = 1;
int c = (int)(a*100);//我watch等号右边的值是0.01没错,那就是我想要的这样做应该是不能了,这个我几乎明白了,那有哪为兄弟有别的好办法,或者直接给个函数也行,300了解这个小问题
str.Format("%.2f",d);
此时的str就是两位小数的字符串了
float b = 1;
float c = (int)(a*100)/100.0
1.22999999....我劝你放弃这种想法,改成获得整型123或两个整型1和23再处理。
剩下的就是用long atol( const char *string )之类的函数把这转换成long或float型了
float a = 0.01;
float b = 1;
float para = 100;
int c = (int)(a*para);//我watch等号右边的值是0.01没错,那就是我想要的
float d = c/para;
float c = 1.23;
你能保证存储的一定是1.23而不是1.22999...?即使这个数恰巧是,换成另一个数时能保证吗?
首先对f*pow(10,n)取整;然后取整后的值乘以pow(10,-n)
那就加个0.5或者0.005用来四舍五入.
char str[100] = "";a = 1.3243424432;sprintf(str,"%.2f",a + 0.005);a = atof(str);
float a = 0.01;
float b = 1;
int c = (a*100 + 0.5 )
float d = c/100
a*=100;
double b=ceil(a-0.5); //四舍五入
a=b/100;ceil(x)为取大于x的最小整数!
这样很精确!!!
要是强调只是取小数点后两位的值,如1.356为135
的话,可用floor(x)
floor(X)为小于X的最大整数。
*100后,1.356->135.6,然后得到135,再/100
但要注意:如1.350,则会得到1.34
要加个判断