美文网首页
浮点类型为什么不能精确

浮点类型为什么不能精确

作者: natewang | 来源:发表于2018-09-25 21:49 被阅读51次

    101.11 就等于 1 * 2^2 +0 2^1 + 12^0 + 12^-1 + 12^-2 = 4+0+1+1/2+1/4 = 5.75 下面的图展示了一个二进制小数的表达形式。

    image

    从图中可以看到,对于二进制小数,小数点右边能表达的值是 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 ... 1/(2^n)现在问题来了, 计算机只能用这些个 1/(2^n) 之和来表达十进制的小数。

    我们来试一试如何表达十进制的 0.2 吧。

    0.01 = 1/4 = 0.25 ,太大0.001 =1/8 = 0.125 , 又太小0.0011 = 1/8 + 1/16 = 0.1875 , 逼近0.2了0.00111 = 1/8 + 1/16 + 1/32 = 0.21875 , 又大了0.001101 = 1/8+ 1/16 + 1/64 = 0.203125 还是大0.0011001 = 1/8 + 1/16 + 1/128 = 0.1953125 这结果不错0.00110011 = 1/8+1/16+1/128+1/256 = 0.19921875已经很逼近了, 就这样吧。 这就是我说的用二进制小数没法精确表达10进制小数的含义。

    https://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExNg==&mid=2665513140&idx=1&sn=565517e977ac56904305a4a9f9d65012#rd

    相关文章

      网友评论

          本文标题:浮点类型为什么不能精确

          本文链接:https://www.haomeiwen.com/subject/rulroftx.html