练习2问题:double i 和 int i 的结果为什么不一样?

C 练习实例2
练习2

#include<stdio.h>
void main()
{  double  i;
double b1,b2,b3,b4,b5,sum;
b1=100000*0.1;
b2=b1+100000*0.075;
b3=b2+200000*0.05;
b4=b3+200000*0.03;
b5=b4+400000*0.015;
printf("请输入当月利润:");
scanf("%f",&i);
if(i<=100000)
{sum=i*0.1;}
else if(i<=200000)
	sum=b1+(i-100000)*0.075;
else if(i<=400000)
	sum=b2+(i-200000)*0.05;
else if(i<=600000)
	sum=b3+(i-400000)*0.03;
else if(i<=1000000)
	sum=b4+(i-600000)*0.015;
else
	sum=b5+(i-1000000)*0.01;
printf("当月奖金为:");
printf("%f元\n",sum);

运行输入 120000或120000.0 答案均为-92559605893710121000000000000000.00000这个奇怪的输出,若将i的double类型改为int 类型 则答案正确,为什么?

原来是float对应的是%f,而double对应的是%lf。
scanf()语句:"%lf"用于double类型,"%f"用于float类型
printf()语句:"%f"既可用于double类型,又可用于float类型,但意思是指“保留6位小数”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值