double与float精度问题
2016-04-09 本文已影响121人
lfb_CD
因为计算机是用二进制0和1存储信息的,对于十进制的小数,需要先转成二进制才能存入计算机(整数部分除2取余,小数部分乘2取整),在十进制0.1和0.9之间(包括0.1和0.9)的小数,转换成二进制后只有0.5才能转换成有限小数,而其它的只能转换成无限小数.
float和double根据其精度来对该无限小数进行截取存入计算机,
下面出现的四舍五入问题也是由于精度问题导致的:
![](https://img.haomeiwen.com/i40785/c01d894c5d77cdd0.png)
因为计算机是用二进制0和1存储信息的,对于十进制的小数,需要先转成二进制才能存入计算机(整数部分除2取余,小数部分乘2取整),在十进制0.1和0.9之间(包括0.1和0.9)的小数,转换成二进制后只有0.5才能转换成有限小数,而其它的只能转换成无限小数.
float和double根据其精度来对该无限小数进行截取存入计算机,
下面出现的四舍五入问题也是由于精度问题导致的: