最近本来一直在学《深入理解计算机系统》这本书,但是一直没有养成复习的习惯,而且太浮躁了,不求甚解。以后要脚踏实地的把每个知识点学好,练习什么的都要做。学习遇到问题要赶紧记录解决,写好计划。这些习惯是高中悟出来的,大学要重写捡起来了。
因为浮点数的表示精度有限,所以有时候要进行舍入。
如果数值不在两者之间就正常舍入。如4.3 舍入到个位为 4,4.7舍入到各位为5.
如果数值刚好在两者之间就按偶数舍入。按偶数舍入的意思是朝着舍入位是偶数的方向舍入。如4.5舍入到个位,可能舍入到4或5,由于4是偶数,所以最后的舍入结果为4。
不管怎么舍入都会有误差,而如果要计算数据总体的平均值。总是向上舍入(4.5舍入到5)会让平均值变大,总是向下舍入(3.5舍入到3)会让数据平均值变小。
而按偶数舍入的话在偶数两边的值,如(3.5,4.5)一个变大,一个变小,最后对平均值的影响最小。
十进制比较好舍入的原因是人们一看就知道中值在哪,是大于还是小于中值。而二进制的话却比较不好看,如1 1 1 0. 0 1 0 0 ,要舍入到小数点最后一位,到底是大于还是小于或是等于中值呢?
有个判断的小技巧,中值本质上是把一个范围划分成数据量相同的两个范围,比如50把100分成两个有50个数的范围,4把8分成两个有4个数的范围。二进制也是这样,例如二进制 1 0 0 的中值 1 0,向下 有 0 0 1一个数,中间是 0 1 0 ,向上是 0 1 1 一个数,再加就进位了。通过这个例子可以看出,二进制要舍入位后的中值就是要舍入位的下一位有效数字位1,其他位为0。 如 1 1 1 0. 0 1 0 0 这个例子,小数点后一位为要舍入数字,下一位为1,其余位为 0,就是中值。
确定了中值,二进制该怎么向偶数舍入呢?二进制的偶数就是要舍入位为0的情况 1 1 1 0. 0 1 0 0最后的舍入结果应为 1 1 1 0.0,如果舍入位一开始是 1,就变为0同时进位。 如 0 . 1 1舍入到小数点后一位, 1 . 0 。
原文:https://www.cnblogs.com/hitsz-yc/p/14794627.html