微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > Re: round(x)和floor(x-0.5)的区别

Re: round(x)和floor(x-0.5)的区别

时间:12-12 整理:3721RD 点击:
精度不一样,理论上0.5向上rounding和向下rounding的概率应该是一样的。
round(x)比floor(x+0.5)就好在0.5的时候不是总是进一的

round是正轴0.5靠右,副轴靠左,floor(x+0.5)都是靠右,是这个意思吧?
不过好像没啥实际用处啊

a=0+0.5+0.5+0.5
b=0-0.5-0.5-0.5
按round算
a=1+0.5+0.5=2+0.5=3
b=-3
a+b=0
按floor算
a=3
b=0
a+b=3
明显round合理些
但floor硬件实现简单,最低bit加1,然后再截掉就可以了,正负数一样

比如数据
I.F
I表示整数,F表示小数
假如F有4个比特,总共可能有16种小数可能
考虑正数的情况:
1.用round,有7个数会被舍掉变小,1个数不变,8个数会进位变大,变大的概率是8/16
2.用floor+x的形式,有7个数被舍变小,1个数不变,8个数会进位(和round一样)
考虑负数的情况:
1.用round,有8个数变小,1个数不变,7个数变大,变大的概率是7/16
2.用floor+x的形式,有7个数变小,1个数不变,8个数变大,变大的概率是8/16。
如果我没有算错的话
至于说孰好孰坏,对于电路来讲,肯定是后者简单,对算法本身来讲,区别会很小。如果因为这点区别,导致整个算法的性能有很大影响,只能说这个算法有问题。。。。。。

硬件上常用的实现方法是-x.5四舍五入为-x,x.5四舍五入为x+1
因为这么做算是误差与面积的最好折中

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top