编程中小数为什么 称为浮点数?

假如我们的浮点数:

float a=1.0;

在c++中,假设a占用四个字节,则该数可以由32位的0和1表示。具体表示如下:

0              01111111      00000000000000000000000

符号位      阶位               尾数

翻译一下:符号位代表着该数值的正负,(阶位-127)代表着小数点移动的位数 ,尾数代表以1开头小数点后面的数字:1.00000000000......(23位)

回到上面的例子:0——正,01111111——127,0000000....——1.000000....

则移动的位数:127-127=0,故1.0000000...中的小数点不移动(浮动),然后将其转为10进制位+1.0;

再举个例子:0 10000101 11110110000000000000000

以上是个浮点数在内存中的表示:第一步看符号位0,所以为正,接着10000101=133,所以浮动的位数位133-127=6;接着看1.11110110000000000000000,将其小数点浮动(移动6位)得到:1111101.10000000000000000,将其转为十进制:+125.5

综上:浮点数的浮点二字不是空穴来风,而且可以看出4字节的浮点数小数位最多有23位,转为十进制最多为7位,这也是为什么float数的精度只有7位的原因。




猜你喜欢

转载自blog.csdn.net/feng__shuai/article/details/79111084
今日推荐