如何对两个float类型的数进行求余?

2025-01-08 04:28:20
推荐回答(5个)
回答1:

float类型转化为整型最简单的就是强转,如
int a;
float b;
b = 100.5;
a = (int)b;
然后进行求余,这样有一个问题就是在强转的时候会损失精度。

另外,float也可以直接求余,用fmod,定义在math.h中,用法如下
float a,x,y;
a = fmod(x,y);

回答2:

按常规的话两个非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);

}

回答3:

如果你单纯只是想得到余数,可以用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;
}

回答4:

#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));
}

回答5:

提供一个思路
如果不能除
那就把这两个数都乘以一定的倍数把他们化为整数在求余数