中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

浮点数简介

浮点数定义

IEEE 754标准下的浮点数定义:浮点数由符号位、指数位和尾数三部分组成。32位单精度浮点数符号位占1位,指数位占8位,尾数占23位,能够表示的范围:-3.4e38~3.4e38。64位双精度浮点数符号位占1位,指数位占11位,尾数占52位,能够表示的范围:-1.79e308 ~ +1.79e308。

图1 浮点数组成

非规格化浮点数

非规格化浮点数(Denormalized Number)是浮点运算中的一个特殊的值,在规格化浮点数中,尾数的前导固定为1,如浮点数0.001234,其规格化浮点数表示为1.234e-3,但对于某些极小值的浮点数,例如1.234e-40,该数的指数部分超出单精度浮点数的指数范围,则需要在尾数补0,表述为0.01234e-38,类似这种尾数前导为0的浮点数即为非规格浮点数。单精度能够表示最小的非0正数是1.17549435082e-38(0x800000),其非规格浮点数范围是-1.17549435082e-38~1.17549435082e-38。

ULP

ULP(Unit in the Last Place)定义为:在计算机科学和数值分析中,最后一位上的单位值或称最小精度单位,缩写为ULP,是毗邻的浮点数值之间的距离,也即浮点数在保持指数部分的时候最低有效数字为1所对应的值。

以实数值0.1来说明ulp,实数值为0.1的单精度浮点数为0x3dcccccc(0.099999994039536),或者为0x3dcccccd(0.10000000149012)。则实数值0.1的ulp为|0.10000000149012 - 0.099999994039536| = 0.000000007450584

如果计算机使用向下近似的方法则用0.099999994039536来表示0.1,误差为0.1-0.099999994039536=0.000000005960464 ≈ 0.8ulp

如果计算机使用向上近似的方法则用0.10000000149012来表示0.1,误差为0.10000000149012-0.1=0.00000000149012 ≈ 0.2ulp。

舍入

IEEE 754标准定义了4种舍入方式:

  • Round toward nearest:舍入到最接近的数,在一样接近的情况下偶数优先(在二进制中是以0结尾的)。
  • Round toward+∞:会将结果朝正无限大的方向舍入。
  • Round toward -∞:会将结果朝负无限大的方向舍入。
  • Round toward zero:会将结果朝0的方向舍入。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词