(5/9)*(f-32)与5*(f-32)/9

41 篇文章 10 订阅
2 篇文章 0 订阅

今天在Linux下用c语言写个小程序玩玩,主要就是根据华氏温度计算摄氏温度。公式是:摄氏度=(5/9)*(华氏度-32)

代码很简单~

#include<stdio.h>
main()
{
	int c,f;	/*c代表摄氏度,f代表华氏度*/
	int lower,upper,step;
	lower=0;
	upper=300;
	step=20;
	f=lower;
	while(f<=upper)
	{
		c=5*(f-32)/9;
		printf("%d\t%d\n",f,c);
		f=f+step;
	}
}

上面这个c=5*(f-32)/9;如果换成(5/9)*(f-32),看起来两者是等价的,但出来的结果显示计算出的摄氏度全是0,为啥呢?

因为定义成int类型之后,涉及到四则运算,并不是对最后计算出来的精准结果做int转型,而是每一步的结果都是一个int类型,而5/9显然等于0了。。

所以所有的摄氏度出来都是0。。

我又用java测试了一下,同样,都是这种计算方式,所以大家以后使用int类型的时候要小心这个问题了~

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值