运行如下:
原理:
举个例子,float类型39.29。在计算机存储时,它会先把整数部分39转换成二级制,至于后面的0.29则会一直将它乘以2,如果大于1则减去一继续乘以2,如果等于1则停止。
这样就难免出现一些问题,我们可以从上面的图片看到接下来的操作将无限循环0.16*2=0.32及后面的计算。因为是无限循环,而我们float类型一般都是32位、64位存储,超过了存储范围,自然数据就不准确了。
接下来对得到的二进制进行科学计数法表示(小数点向前移动了5个位置,后面由于是二进制所以是2**5:
因为是无限循环,而我们float类型一般都是32位、64位存储,超过了存储范围,自然数据就不准确了。
建议:对于敏感的小数类型,可以使用decimal。