当前位置: 代码迷 >> 单片机 >> DS18b20,抢救,16进制的数为什么乘以0.0625就变成10进制数了
  详细解决方案

DS18b20,抢救,16进制的数为什么乘以0.0625就变成10进制数了

热度:337   发布时间:2016-04-28 15:16:41.0
DS18b20,急救,16进制的数为什么乘以0.0625就变成10进制数了
 tem_l=readbyte();
 tem_h=readbyte();
 t=tem_h<<8;
 t=t|tem_l;
 tt=t*0.0625;
 t=tt*10+0.5;
 return(t);
问题一:tem_l和tem_2为二进数,怎么经过  tt=t*0.0625就变成了10进制数


问题二: t=tt*10+0.5;这句话是四舍五入,怎么理解,请举例说明

------解决方案--------------------
1、结果为几进制,取决于tt的变量类型,几进制对于电脑都是一样的,你可以直接用数码管显示tem_1,也可以得到十进制的结果。
2、第二个问题说清楚些,我没看懂
------解决方案--------------------
第二个问题,四舍五入。
因为在C中,整型数的除法没有小数部分,只有整数部分,就是截尾,比如 3.1~3.9 取整都是3,没有进行四舍五入到最近的整数。
t=tt*10+0.5,就实现了四舍五入,比如t的值在[9.5~10.5),加0.5之后,t [10.0~11.0), 按照C的运算规则, t = 10,和我们正常的四舍五入计算结果是一致的。