Monthly Archives: January 2015

浮点数误差

转载请注明原文章链接:http://www.twinklingstar.cn/2015/1501/roundoff-error-of-floating-point-2/ 在计算机中,小数有两种表示方式:定点数和浮点数。小数点隐含在某一个固定位置上的数据,就称为定点数。为了能正确的表示定点数,我们必需规定数据的位数和小数点的位置,以8位的数据为例,规定低3位是小数位,则一个定点数\({\left( {00010.110} \right)_2} = {2^1} + {2^{ - 1}} + {2^{ - 2}} = 2.75\)。定点表示法较为简单,但它表示的数据非常有限,无法表示数值很大的数据和数值很小的数据。为了表示更大范围的数据,数学上通常采用科学计数法,把数据表示成一个小数乘以一个以10为底的指数,例如,太阳的质量\(1.989 \times {10^{33}}\)克。科学计数法改写为\(0.1989 \times {10^{34}}\),把有效数字\(0.1989\)和以10底的指数\(34\)存储在机器中的固定单元内,就可以表示出数值如此大的数据,如果指数是一个负数,例如\( - 34\),则表示的数据的数值非常小。像这样,把一个数的有效数字和指数部分在计算机中分别予以表示,就是浮点表示法。这种表示法,相当于数的小数点位置随比例因子的不同而在一定范围内自由浮动,改变指数部分的数值相当于改变小数点的位置。 IEEE 754标准是由1985年引入的浮点数算术标准,是最广泛使用的浮点数运算标准,在2008年对该标准进行了修改。  图1. 单精度和双精度浮点数的存储格式 IEEE 754标准规定的单精度和双精度浮点数的存储格式如图1所示,最高位是符号位\(S\),规定浮点数的正负;偏置指数\(E\),紧跟在符号位之后,占\(w\)位;有效数字在最后,占\(p\)位。IEEE 754规定偏置指数\(E = 0\)和\(E = {2^w} - 1\)保留,用于表示\( \pm 0\)、\( \pm \infty \)或\(NaN\)。通过与偏置量的差来表示实际的指数值,规定偏置量\(bias

spacer