float类型转化为整型最简单的就是强转,如
int a;
float b;
b = 100.5;
a = (int)b;
然后进行求余,这样有一个问题就是在强转的时候会损失精度。
另外,float也可以直接求余,用fmod,定义在math.h中,用法如下
float a,x,y;
a = fmod(x,y);
按常规的话两个非INT型数据进行求余数,运行时必会报错,所以需要进行强制转换!
main()
{
float a,b;
int c;
scanf("%f%f",&a,&b);
c=(int)a%(int)b;
printf("%d",c);
}
如果你最后需要以小数输出的话可以这样写
main()
{
float a,b,c;
scanf("%f%f",&a,&b);
c=(int)a%(int)b;
printf("%f",c);
}
如果你单纯只是想得到余数,可以用c = a-((int)(a / b) * b);
其中(int)(a / b)是对a / b进行除法,并强制类型转换加(int)进行趋零截尾;
举个例子:
#include
#define CM_PER_IN 2.54 // 1英寸 = 2.54厘米
#define IN_PER_FEET 12 // 1英尺 = 12 英寸
int main(void)
{
float cm, inch, left; // 其中left即为所求float余数
int feet;
printf("Enter a height in centimeters: ");
scanf("%f", &cm);
while (cm > 0)
{
inch = cm / CM_PER_IN;
feet = inch / IN_PER_FEET;
left = inch - (feet * IN_PER_FEET);
printf("%.1f cm = %d feet, %.1f inches\n",
cm, feet, left);
printf("Enter a height in centimeters (,=0 to quit): ");
scanf("%f", &cm);
}
printf("bye\n");
return 0;
}
#define PRECISION 0.000001
//计算a%b
double calc(double a, double b)
{
if(a return a;
return calc(a-b, b);
}
void main()
{
double a=56.78, b=3.51;
printf("a%%b=%f", calc(a, b));
}
提供一个思路
如果不能除
那就把这两个数都乘以一定的倍数把他们化为整数在求余数