Skip to content

浮点型如何存储

我们知道在计算机中存储的都是二进制,整型的二进制不必多说,十进制和二进制的相互转换

那我们的浮点型,也就是小数在计算机中如何存储的呢?

小数转换二进制的换算方法

假设这样一个数:12.05

12.05的整数部分为12, 转成二进制为1100.

小数部分是0.05

这该如何计算?

步骤:

  1. 0.05不断乘于2
  2. 结果小于1,则继续乘。 大于1,减1继续乘,直到结果等于1 结束。

演示:

java
0.05 * 2 = 0.1;  // 小于1继续
0.1 * 2 = 0.2; 
0.2 * 2 = 0.4;
0.4 * 2 = 0.8;
0.8 * 2 = 1.6; // 大于1,减1继续
0.6 * 2 = 1.2;
0.2 * 2 = 0.4; // 此时发现和第三行相同了,说明再怎么乘下去也是一个循环

我们把结果的整数部分拼接,得到00001100 ,第三行到第六行会一直循环0011

得:00001100110011001100110011001100110011...

省去前面的0

11001100110011001100110011...

组合在一起为:1100.1100110011001100110011。。。

科学计数法:1.100110011001100110011.。。 * 2³(小数点左移三位)