欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 03:15:01 责任编辑: Author_N1

 

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,和我们正常的四舍五入计算结果是一致的。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:15:01
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20089/
本文WWW.DOC100.NET DOC100.NET版权所有。