C语言怎么对浮点型的数求余?

比如 float a=3.14 ,b=3;我知道求余数一定要两个数都是整型的,,我有一点不懂:如果我用整形定义两个变量,如:int a=3.14 ,b=3,我赋给整形a的值是一个小数,这样编译时候不会提示出错,那么我在用 a%b;得到的结果会怎样呢?会是0.14吗?

这样:

float a=3.14 ,b=3;

int c;

a*=100;

b*=100;

c=(int)a%(int)b;

a=(float)c/100;

%只能用于整形,不能用于浮点,如果浮点定义,必然报错,结果应该是0,不可能是0.14,int=3.14系统默认为3 3%3=0,想得到0.14可以借助系统函数。

扩展资料:

注意事项

% 只用于整型的计算,后一个数不能是0,参与运算的数据可正可负。

对于x%y ,计算之后结果的正负与 x 的符号相同,如果前者是较小的数,后者是较大的数,那么,结果直接为较小的数。例如:

10%3=1

3%10=3

10%-3=1

-3%10=-3

-10%-3=-1

-3%-10=-3

3%13=3

0%3=0

0%-3=0

3%0  (×)Error!

-3%0  (×)Error!

10.0%3.0 (×)Error!  // 浮点型不能进行模运算

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-09

在C语言中,浮点数是不能进行求余操作的。

因为C语言规定,求余运算符( % )的左右操作数必须为int类型。


浮点类型的数可以表示小数,所以浮点数相除后能用小数表示,不存在余数的问题,所以也就不能进行求余运算。


如:

int a=3, b=2, f1;
float c=3, d=2, f2;
f1 = a%b;   // 合法
f2 = c%d;   // 不合法

第2个回答  2014-01-15
1,%只能用于整形,不能用于浮点,如果浮点定义,必然报错
2,结果应该是0,不可能是0.14,int=3.14系统默认为3 3%3=0
3,若想得到0.14这样来算,也可以借助系统函数;
float a=3.14 ,b=3;
int c;
a*=100;
b*=100;
c=(int)a%(int)b;
a=(float)c/100;
第3个回答  推荐于2017-10-12
int a=3.14 ,b=3可以的
a相当于把3.14强制转化为整数3赋值给a
整数和整数取余3%3=0

如果你要得到3.14%3=0.14的效果math.h有个函数叫fmod本回答被提问者采纳
第4个回答  2014-01-15
#include<stdio.h>main(){ float a=3.14,b=3; printf("%d\n",3 % 3); a*= 100; b*= 100; printf("%f",(float)(((int)(a) % (int)(b)) / 100.0));}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网