zoukankan      html  css  js  c++  java
  • (5/9)*(f-32)与5*(f-32)/9

    今天在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	%d
    ",f,c);
    		f=f+step;
    	}
    }


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

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

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

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

  • 相关阅读:
    第十三周学习进度条
    冲刺第四天
    第二天冲刺
    第三天冲刺
    第一天冲刺
    课下作业
    第十二周学习进度条
    课下作业
    webp与png、jpg相互转换
    Node疑难解决
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3301770.html
Copyright © 2011-2022 走看看