第2个回答 推荐于2017-09-12
确定输入的float型的小数点位数,可以通过sprintf函数实现数字转字符串,处理字符串,判断小数点“.”后的位数实现,但由于系统中float存在7位有效数字(含小数点,即小数点后有6位小数),使得系统或者补0,或者截断,导致统计与实际输入数字的位数不符。
//主要代码
char buffer[40];
float fnum=12.38;
sprintf(buffer,"%f",fnum);//获得字符串
int i=0,num=0;
for(;*(buffer+i)!='\0';i++)
{
if(*(buffer+i)=='.')
num=0;//小数点后开始计数
else
num++;//统计小数点后数字位数
}
float 为单精度浮点型数据,在Turbo
C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。建议输入采用字符串形式,这样统计不会出偏差,使用数字时,使用double atof( const char *str )函数转换。