浮点数在计算机中的储存原理
浮点数的种类
·Double
·Float
Double和Float的区别主要在于精度的不同,Float占用计算机内存的4个Byte,而Double占用计算机内存的8个Byte,这使得两者之间各有千秋。Double比Float更为精确,因为它占用了两倍Float内存,但是也正因为这个原因,Double的运行要比Float慢得多。
浮点数的误差来源
浮点数比如用64位,8个Byte储存一个实数,那么计算机会用1位来表示符号,52位存储尾数,也就是实数小数点前的数,11位存储指数,也就是实数小数点后的数,注意了,计算机是二进制的,因而小数点后的数字要精确的话都必须是2的11次方分之一的倍数,不然的话,计算机会一直去除,当输出精度不够时,看似结果正确,实则这里是计算机自动四舍五入的结果,当你指定计算机输出精度够高时,计算机便会出错。
Example
比如我这里设置一个浮点数Double x,我输入的值时0.45,但是0.45并不是2的十一次方分之一的整数倍,因此计算机只能不断的趋近,而此时我设定输出11位小数,这时候输出的精度没有达到计算机误差的精度,因为输出的值看似正确,实则看左下角变量栏,该输出值实际已经不等于0.45了,这是由二进制原理和浮点数的储存机制决定的。
查阅资料:CSDN论坛
计算机科学概论