两个int数据的运算输出float类型的问题

一个简单的问题当我对两个int类型做除法(/)时,想输出一个相对精确的浮点数float类型的数据,于是一开始我用了这样的算法

int a=10;
int b=15;
float c=float(a/b);
cout<<c;

程序可以正常编译,但是结果却是0!
于是仔细看了看书,发现C++在进行运算时是这样工作的:

  1. 对于两个同类型的,如float与float做除法运算。计算结果是float格式的
  2. 对于两个不同类型的,如int与float做除法运算。C++会把其中位数比较低的数据拉高。让int数据变成float数据再做运算。
    这样就可以解释为什么上述代码不能输出float类型的数据:因为a/b是两个int类型,所以他们做除法后也是int类型(也就代表结果是0)。这时我再给0改变数据类型为float是没有意义的!
    思考之后把代码改成了如下形式:
int a=10;
int b=15;
float c=float(a)/b;
cout<<c;

这样我就把a的数据类型强行改成了float,于是在做除法时,b的数据类型也被拉高,就可以得到期待的结果了。
书中也提出了其他的方法,不过我觉得这种方法很实用,有兴趣可以看《C++Primer Plus》第六版的62页。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值