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

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

2019-10-17 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.5万
展开全部

这样:

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!  // 浮点型不能进行模运算

天云小店
推荐于2017-10-09 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:786万
展开全部

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

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


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


如:

int a=3, b=2, f1;
float c=3, d=2, f2;
f1 = a%b;   // 合法
f2 = c%d;   // 不合法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duyin2011
2014-01-15 · TA获得超过2399个赞
知道大有可为答主
回答量:1723
采纳率:100%
帮助的人:665万
展开全部
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张三李四王五干
推荐于2017-10-12 · TA获得超过669个赞
知道答主
回答量:178
采纳率:0%
帮助的人:138万
展开全部
int a=3.14 ,b=3可以的
a相当于把3.14强制转化为整数3赋值给a
整数和整数取余3%3=0

如果你要得到3.14%3=0.14的效果math.h有个函数叫fmod
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
plb_plb
2014-01-15
知道答主
回答量:10
采纳率:0%
帮助的人:5.8万
展开全部
#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));}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式