浮点类型的精度问题

代码:

 

结果:

 

那么为什么对double类型的数据进行计算得不到“精确”的结果呢?

 

我们知道在计算机中浮点数的表示方法是由一个整数(即尾数)乘以一个基数(计算机中一般为2)的整次幂得到。(类似于科学计数法,科学记数法基数为10

float的内存结构为:符号位表示正负,1位 指数位,8位 尾数位,32(符号位1表示负,0表示正

指数是以2为底的,范围是 -128 到 127,如果超过了127,则从-128开始计。                                   即:127+1=-128

尾数都省去了第1位的1,所以在还原时要先在第一位加上1。它可能包含整数和纯小数两部分,也可能只包含其中一部分,视数字大小而定。对于带有整数部分的浮点数,其整数的表示法有两种,当整数大于十进制的16777215时使用的是科学计数法,如果小于或等于则直接采用一般的二进制表示法。科学计数法和小数的表示法是一样的。

小数部分则是直接使用科学计数法,形式是X * ( 2 ^ n 

这样就导致浮点类型在计算机的存贮中无法精确表示。

posted @ 2015-10-02 22:43  木子金帛  阅读(326)  评论(0编辑  收藏  举报