什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数
典型的比如相对于浮点数的定点数(Fixed Point Number)
在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置
货币的表达就可以使用这种方式,比如 99
00 或者 00
99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值
由于小数点位置固定,所以可以直接用四位数值来表达相应的数值
SQL 中的 NUMBER 数据类型就是利用定点数来定义的
还有一种提议的表达方式为有理数表达方式,即用两个整数的比值来表达实数
定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数
最终,绝大多数现代的计算机系统采纳了所谓的浮点数表达方式
这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa,尾数有时也称为有效数字——Significand;尾数实际上是有效数字的非正式说法),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数
比如 123
45 用十进制科学计数法可以表达为 1
2345 × 102 ,其中 1
2345 为尾数,10 为基数,2 为指数
浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数
IEEE 浮点数 计算机中是用有限的连续字节保存浮点数的
在 IEEE 标准中,浮点数是将特定长度的连续字节的所有二进制位分割为特定宽度的符号域,指数域和尾数域三个域,其中保存的值分别用于表示给定二进制浮点数中的符号,指数和尾数
这样,通过尾数和可以调节的指数(所以称为"浮点")就可以表达给定的数值了
IEEE 754 指定: 两种基本的浮点格式:单精度和双精度
IEEE 单精度格式具有 24 位