遇到一个问题想计算一下网络发送数据的大小 是要转化为char数组类型的 求这个数组的长度,如下: 
double dou; 
char tempvalue[256]; 
sprintf(tempValue,"%f",dou); 
int z = strlen(tempValue); 
想问一下这个z的最大取值会是多少 怎么计算出来的 谢谢大家

解决方案 »

  1.   


    /*
    双精度浮点数形式存储,
    负值取值范围为 -1.79769313486231570E+308 到 -4.94065645841246544E-324,
    正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。
    取最小值格式化之后为0.00000*/
     
            double a=-1.79769313486231570E+308 ; //double的取值范围 
    char tempvalue[256]; 
    sprintf(tempvalue,"%f",a); 
    int z = strlen(tempvalue);  //z= 317 看来256的空间不够呀!!! 
      

  2.   

    int z = strlen(tempValue); 最大值?int型的最大值,32bit计算机是-2^32 -- +2^32-1.
      

  3.   

    不要转化到字符串,字符串不定长,占空间,直接转char较好,只有8字节
      

  4.   

    存在的一个小问题:
    sprintf(tempValue,"%f",dou); 改成 sprintf(tempValue,"%lf",dou); 按Win32对double 的处理方式,小数后六位小数,z的最大值是316。附:
             double dou;
    dou = DBL_MAX;
    char tempvalue[256]; 
    sprintf(tempvalue,"%lf",dou); 
    int z = strlen(tempvalue); //z = 316
      

  5.   

    直接转char较好,只有8字节?
    是什么意思,怎么做啊?
      

  6.   

    double dou; 
    char tempvalue[256]; 
    memcpy(tempvalue,(char*)&dou,8);