读入字符串,在用一个for循环,如果发现有小数点了,将标志位 = 1,然后,如果发现有数字了,判断标志位是否为1,如果是,即已经到小数点后了,计数器+1,最后输出计数器的值即可
#include
#include
int main(){
int i,flag = 0,wei = 0;
char s[500];
scanf("%s",s); //将浮点数按字符串处理
for(i = 0; i < strlen(s); i++){
if(s[i] == '.') flag = 1;
else if(flag == 1) wei++;
}
printf("%d\n",wei);
return 0;
}
利用整数的截断效果,将数据小数部分单取出来,乘以10后取整,与原数比较,若不等,则判断大于小数点后1位,依此计算直到相等为止。
在取整时进行小数点后1位四舍五入可部分防止二进制浮点数与真实数据间的舍入误差问题。
比如 float m = 22.890; 只需要判断 if ( m - (int) m == 0) 即可。//减去整数部分
将数字转化成字符串,写一个for循环,在遇到小数点之后,递增计数器