浮点数的范围和精度

浮点数的运算比整数效率要低,但是一些特殊的场合还是必须要用浮点数的,因此我们增加了浮点数的运算支持;浮点数是采用科学技术法来描述的,因此讨论浮点数的范围和精度我们必须了解科学计数法:

1.23456E10

对于科学技术法来说,范围有两部分:有效数字和幂;其中有效数字,也就是前面说的1.23456这个值,对于这个我们系统采用22bit二进制来表示(普通c语言的浮点数采用23bit来表示),在22bit下:

2^22=4194304

因此,6位数字肯定没问题,7位数字看情况,因此我们可以记忆为浮点数支持6位半;

对于浮点数,我们准备了下面的程序来说明:

echo(1.23456789);//1.234568

可以看到实际数字有效率为6位半;

为了方便理解,我们通过上面的程序给出了下面对应结果:

输入值 输出值 说明
0.0000123456789 0.000012 小数点后的0也算有效数字
0.000123456789 0.000123
0.00123456789 0.001235
0.0123456789 0.012346
0.123456789 0.123457
1.23456789 1.234568
12.3456789 12.345678
123.456789 123.456787
1234.56789 1234.567871
12345.6789 12345.677734
123456.789 123456.781250
1234567.89 1234567.750000
12345678.9 12345678.000000
123456789.0 123456784.000000 注意此时6位半的精度

也就是说:

 float a=123456789;
 float b=123456784;
 if (a==b){
     echo("true");
 }

上面的代码最后返回 true 表示a==b;

对于常规应用,比如计算电功率,电压35.234V,电流2.345A,得到功率:82.623718W,至少在mW级别的小数是可靠的,常规使用足够。