我想取任意一个float数的小数点后的2位值,比如1.234,我要值1.230
有没有这样的库函数?如果没有该怎么做?我是这样做的
float a = 0.01;
float b = 1;
int   c = (int)(a*100);//我watch等号右边的值是0.01没错,那就是我想要的这样做应该是不能了,这个我几乎明白了,那有哪为兄弟有别的好办法,或者直接给个函数也行,300了解这个小问题

解决方案 »

  1.   

    上面第3行代码后加一行 float d = c/100;然后实现我的目的,漏掉了(当然还是不能解决问题,不过为了表达完整意思,我还是补充一下)
      

  2.   

    change to string, then find dot
      

  3.   

    CString str;
    str.Format("%.2f",d);
    此时的str就是两位小数的字符串了
      

  4.   

    float a = 0.01;
    float b = 1;
    float   c = (int)(a*100)/100.0
      

  5.   

    从float a = 1.234获得整型123很容易。但获得浮点型1.230谁也无法担保。因为1.23在浮点数里往往又被表示成
    1.22999999....我劝你放弃这种想法,改成获得整型123或两个整型1和23再处理。
      

  6.   

    用char *_ltoa( long value, char *string, int radix );之类的函数把数转换成CString型 在string中strchr .然后记下.后两位的位置, 再在此位置取Left( int nCount ) 如果想在后面加0, 直接用="000(随便几位)"
    剩下的就是用long atol( const char *string )之类的函数把这转换成long或float型了
      

  7.   

    或者两次用modf将float分离成两次整数,第二次*100再除100.00,然后二次的值加和
      

  8.   

    这样试一下
    float a = 0.01;
    float b = 1;
    float para = 100;
    int   c = (int)(a*para);//我watch等号右边的值是0.01没错,那就是我想要的
    float d = c/para;
      

  9.   

    总之要想精确,最后获得的值不能是float型,我们就直接
    float c = 1.23;
    你能保证存储的一定是1.23而不是1.22999...?即使这个数恰巧是,换成另一个数时能保证吗?
      

  10.   

    这好办啊.char str[100] = "";a = 1.3243424432;sprintf(str,"%.2f",a);a = atof(str);后面就不用说了吧?你自己写个函数就行了.
      

  11.   

    不要转为int 型。它会去掉后面的小数。
      

  12.   

    很好处理,设你的小数为f,欲取小数位数为n,则:
    首先对f*pow(10,n)取整;然后取整后的值乘以pow(10,-n)
      

  13.   

    shesh(无所谓) 的办法也行呀,不过不知道你需要精确点么,
    那就加个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
      

  14.   

    sprintf(str,"%.2f", f_value);//取2位小数
      

  15.   

    #include "math.h"float a=1.23456;
    a*=100;
    double b=ceil(a-0.5);  //四舍五入
    a=b/100;ceil(x)为取大于x的最小整数!
    这样很精确!!!
      

  16.   

    补充一下:
    要是强调只是取小数点后两位的值,如1.356为135
    的话,可用floor(x)
    floor(X)为小于X的最大整数。
    *100后,1.356->135.6,然后得到135,再/100
    但要注意:如1.350,则会得到1.34
    要加个判断