C处理字符串相比于C++是繁琐的多,今天遇到一个接口需求:传入被除数,除数,结果的小数位数,要求返回的格式化的结果。
思考:
1.入参自然都是字符串,转换就需要atoi,atol,atoll等库函数了,这些数据无非是计算KB--MB,Money数据,而且没有小数!!那么就long long了;
2.除数自然不能为零;
3.类型的转换,由于精度要求不是很高,而且数据不是太大,强制转换不会有太大问题;
4.返回指定的小数位数!这好像这没有用过,以前用过的都是“%m.n f","%.Xlf",给定的也就说是个变量,难道再转换成字符串处理,不会吧?只能是UNIX-C语言,C++的IO函数不能用的,setprecision()和fixed()自然不能用..
当然有非常简单的方法,居然不知道...
int tool_devison(char *str_dividend,char *str_divider,char *str_digit) { long long ll_dividend=0L,ll_divider=0L; int i_digit=0; double d_result=0.0f; char pRet[32]; //Some judgment //.... ll_dividend=atoll(str_dividend); ll_divider=atoll(str_divider); i_digit=atoi(str_digit); if(ll_divider==0) { sprintf(pRet,"E_ERROR"); //msgsnd(pRet); //call for some processing return 1; } d_result=(double)ll_dividend/(double)ll_divider; sprintf(pRet,"%.*lf",i_digit,d_result); //msgsnd(pRet); //call for some processing return 0; }
-------------by GIGI. ingressplus.com
OK,nice!