漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3 ?
导读:为什么当我们使用电脑浏览器计算0.2+0.1的时候,结果却是0.30000000000000004,而0.1+0.6的结果却是0.7呢?
用2整除十进制整数,可以得到一个商和余数; 再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止 然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
浮点数和小数并不是完全一样的,计算机中小数的表示法,其实有定点和浮点两种。因为在位数相同的情况下,定点数的表示范围要比浮点数小。所以在计算机科学中,使用浮点数来表示实数的近似值。
S(sign)表示N的符号位。对应值s满足:n>0时,s=0; n≤0时,s=1。 E(exponent)表示N的指数位,位于S和M之间的若干位。对应值e值也可正可负。 M(mantissa)表示N的尾数位,恰好,它位于N末尾。M也叫有效数字位(significand)、系数位(coefficient), 甚至被称作"小数"。
干货直达👇
评论