char szSize[] = "2313050112";
unsigned int uiSize = atoi(szSize);   //uiSize 怎么等于2147483647了
sprintf(szTest,"%.1f GB",(float)uiSize/(1024*1024*1024));

解决方案 »

  1.   

    atoi说明是i就是int了,这个而int的大小要看编译器而unsigned int跟int的取值范围又不一样
      

  2.   

    atoi,转换结果为int类型。
    2147483647就是0x7FFFFFFF。越界了。
    =================================
    char szSize[] = "2313050112";
    double dSize = atof(szSize); 
    sprintf(szTest,"%.1f GB",dSize/(1024*1024*1024));
      

  3.   

    我要处理2.xG~4G(小于2^32)的字符串怎么办?
      

  4.   

    atoi()的返回值时int类型,32位系统int的范围为:-2147483648 ~ 2147483647
      

  5.   

    #include <stdlib.h>
    #include <stdio.h>
    #include <errno.h>int main( void )
    {
    char szSize[] = "2313050112";
    char szTest[100] = {0};
    __int64 uiSize = _atoi64(szSize); //uiSize ÔõôµÈÓÚ2147483647ÁË
    sprintf(szTest,"%.1f GB",(float)uiSize/(1024*1024*1024));
    printf("%I64d", uiSize);
    return 0;
    }