浮点数如何比较

从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
double x;
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;
scanf("%lf",&x);
while(1)
{
if(x>=100)
{
a++;
x=x-100;
}
else if(x>=50)
{
b++;
x=x-50;
}
else if(x>=10)
{
c++;
x=x-10;
}
else if(x>=5)
{
d++;
x=x-5;
}
else if(x>=2)
{
e++;
x=x-2;
}
else if(x>=1)
{
f++;
x=x-1;
}
else if(x>=0.1)
{
g++;
x=x-0.1;
}
else if(x>=0.05)
{
h++;
x=x-0.05;
}
else if(x>=0.02)
{
i++;
x=x-0.02;
}
else if(x>=0.01)
{
j++;
x=x-0.01;
}
else if(x<=fabs(1e-6))
break;
}
printf(“100元的一共有%d张\n”,a);
printf(“50元的一共有%d张\n”,b);
printf(“10元的一共有%d张\n”,c);
printf(“5元的一共有%d张\n”,d);
printf(“2元的一共有%d张\n”,e);
printf(“1元的一共有%d张\n”,f);
printf(“1角的一共有%d张\n”,g);
printf(“5分的一共有%d张\n”,h);
printf(“2分的一共有%d张\n”,i);
printf(“1分的一共有%d张\n”,j);
return 0;
}

假如有float a,floatb,比较a和b的大小,会有精度的差别,所以需要用1e-6来作为桥梁来比较。
d=a-b;
d>(1e-6);//表示的是a>b
d<-(1e-6);//表示的是a<b
d<fabs(1e-6);//表示的是a=b
或者是d<1e-6也可以表示a=b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值