C语言—为什么用实型变量定义一个实数,其数值会改变?

问题描述:

C语言—为什么用实型变量定义一个实数,其数值会改变?
比如用float 定义a=123.45,为什么显示的是123.449997?
1个回答 分类:综合 2014-11-08

问题解答:

我来补答
因为在计算机中只有0和1,不能准确的表达出浮点数.在32为系统中,float是占用4个字节即32-bit,其中4字节中的最高位,用来指示浮点数的正负,当最高位是1时,为负数,最高位是0时,为正数.
浮点数据就是按下表的格式存储在4个字节中:
address+0 address+1 address+2 address+3
contents seee eeee emmm mmmm mmmm mmmm mmmm mmmm s:表示浮点数正负,1为负数,0为正数
e:指数加上127后的值的二进制数
m:24-bit的底数(只存储23-bit)
主意:这里有个特例,浮点数 为0时,指数和底数都为0,但此前的公式不成立.因为2的0次方为1,所以,0是个特例.当然,这个特例也不用认为去干扰,编译器会自动去识别.
 
 
展开全文阅读
剩余:2000
上一页:希望高人解答