关于强制转换的精度问题
//一个付款找钱的程序#include "stdio.h"
int PayMoney(float input);
#define FACENUM 9
void main()
{
//define a para to get currency value
float input;
//get input
scanf("%f",&input);
//print result
printf("Totally %d paper notes.\n",PayMoney(input));
}
//define the function here
int PayMoney(float input)
{
int a,b,c,d,e,f;
int x;
int g,h,i;
float o;
int num;
x=input/1;
o=input-x;
g=(int)(o/0.1000000);
h=(int)((o-g*0.100000)/0.0500000);
i=(int)((o-g*0.10000-h*0.050000)/0.0100000);
a=(int)(x/100);
b=(int)((x-a*100)/50);
c=(int)((x-50*b-a*100)/10);
d=(int)((x-a*100-b*50-c*10)/5);
e=(int)((x-a*100-b*50-c*10-d*5)/2);
f=(int)((x-a*100-b*50-c*10-d*5-2*e));
printf("100块:%d 50块:%d 10块:%d 5块:%d 2块:%d 1块:%d 1毛:%d 5分:%d 1分:%d\n",a,b,c,d,e,f,g,h,i);
num=a+b+c+d+e+f+g+h+i;
return num;
}
// 如果输入111.13,找回的钱就会是2分。老师说是精度问题,请问强制转换问题应该注意什么?
应该怎么修改?