C语言指定float/double类型小数位数(Variable)

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

You may also like