浮点数就是在计算机中输出的小数类型,一般用float、double类。
因为在计算机中底层是用二进制进行存储的,而我们平常使用的是十进制,所以这样就会导致在计算机中精度运算不准确。
从图中我们可以看到:定义两个浮点数,然后运行结果,得到的结果是4.69999999999,而不是我们所认为的4.7。
这就得从进制之间转换去进行更好的了解,从我们熟悉的十进制去转换成计算机所能识别的二进制。十进制小数转二进制小数首先是整数转整数,小数转小数。
对于整数部分来说:整数部分除2,直到商为0结束,得出的结果是取下往上的余数。
小数部分:小数部分使用乘2取整数位,按顺序排列,结果为零点几就输出0,结果为一点几就输出1,直到结果为1.0停止。
按我们所举得例子4.7来看:
整数部分 4 / 2 = 2 .....0 2 / 2 = 1.......0 1 / 2 = 0......1
小数部分 0.7*2=1.4 (1) 0.4*2=0.8(0) 0.8*2=1.6(1) 0.6*2=1.2 (1) 0.2*2=0.4(0)......
小数部分就会陷入无限循环中结果就变成了100.10110 0110 011......
计算机在存储小数时是有长度限制的,所以会截取部分小数进行存储,所以计算机存储的数值只能是个大概的值,而不是精确的值。这样我们就可以知道,大部分浮点数在计算机中是不精确的。