浮点数的机器表示

上图为浮点数在机器中表示的结构,分为三部分:

若浮点数表示为(-1)s M 2E的形式,则

s(符号位,0代表正,1代表负)

exp(阶码) = E +bias  (bias为偏移量:float 取127,double取1023)

frac(尾数域,M是一个位于区间[1.0,2.0)内的小数,而frac隐含了M的整数部分1,只保留小数部分)

阅读更多

4+

java实现精确的浮点数运算

众所周知小数在机器里通常表示为二进制浮点数的形式,而浮点数的精度是有限的:单精度float类型的尾数域(表示数值的部分)是23位,而双精度double类型的尾数域也只有52位(详细参见 浮点数的机器表示
于是,当一个十进制小数不能转换为有限位的二进制数时,这个小数就不能在机器里精确表示
例如0.1在机器里就不能精确表示,其尾数域表现为0011循环:

阅读更多

4+