如果你要了解Number类型,那我建议你还是需要先了解一下IEEE 754.
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点数运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number),一些特殊值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和物种例外状况(包括例外发生的时机与处理方式)。
在IEEE-754标准下,浮点格式主要分为四种类行,即单精度格式、双精度格式、扩展单精度格式和扩展双精度格式。其中32位单精度格式与64位双精度格式作为基础格式更为常用,扩展格式则有特殊目的,一般对用户透明。
在IEEE-754标准下,浮点数一共分为5种:
- NaN:即Not a Number。非数的指数位全部为1同时尾数位不全为0。在此前提下,根据尾数位首位是否为1,NaN还可以分为SNaN和QNaN两类。前者参与运算时将会发生异常。
- 无穷数:指数位全部为1同时尾数位全为0。大。
- 规格化数:指数位不全为1同时尾数不全为0。此时浮点数的隐含位有效,其值为1。
- 非规格化数:指数位全为0且尾数位不全为0,此时隐含位有效,值为0。另外需要注意,以单精度为例,真实指数E并非0-127=-127,而是-126,这样一来就与规格化下最小真实指数E=1-127=-126达成统一,形成过度。
- 0:指数位与尾数位都全为0,根据符号位决定正负。