代码:
结果:
那么为什么对double类型的数据进行计算得不到“精确”的结果呢?
我们知道在计算机中浮点数的表示方法是由一个整数(即尾数)乘以一个基数(计算机中一般为2)的整次幂得到。(类似于科学计数法,科学记数法基数为10)
float的内存结构为:符号位表示正负,1位 指数位,8位 尾数位,32位(符号位1表示负,0表示正)
指数是以2为底的,范围是 -128 到 127,如果超过了127,则从-128开始计。 即:127+1=-128
尾数都省去了第1位的1,所以在还原时要先在第一位加上1。它可能包含整数和纯小数两部分,也可能只包含其中一部分,视数字大小而定。对于带有整数部分的浮点数,其整数的表示法有两种,当整数大于十进制的16777215时使用的是科学计数法,如果小于或等于则直接采用一般的二进制表示法。科学计数法和小数的表示法是一样的。
小数部分则是直接使用科学计数法,形式是X * ( 2 ^ n )。
这样就导致浮点类型在计算机的存贮中无法精确表示。