浮点精细度( 三 )

基本格式 , 另一种称为扩展格式;其中三个特别广泛地用于计算机硬体和语言:单精度 , 通常用于表示C语言系列中的“float”类型(虽然这不能保证) 。这是一个二进制格式 , 占用32位(4位元组) , 其有效位数的精度为24位(约7位十进制数字) 。
双精度 , 通常用来表示C语言系列中的“double”类型(虽然不能保证) 。这是一个占用64位(8位元组)的二进制格式 , 其有效位数的精度为53位(约16位十进制数字) 。
双扩展 , 也称为“扩展精度”格式 。这是一个二进制格式 , 占用至少79位(如果不使用隐藏/隐式位规则 , 则为80位) , 其有效位数的精度至少为64位(19位十进制数) 。x86体系结构提供了满足最低要求(64位精度 , 15位指数 , 从而适应80位)的格式 。通常在这样的处理器上 , 这种格式可以在C语言系列(C99和C11)中使用“long double”标準“IEC 60559浮点运算扩展 - 附属档案F”推荐将80位扩展格式提供为“长双”(如果可用)) 。在其他处理器上 , 如果任何形式的扩展精度不可用 , “long double”可能是“double”的同义词 , 或者可能代表更大的格式 , 如四倍精度 。
增加浮点表示的精度通常会减少由中间计算引起的累积捨入误差量 。不太常见的IEEE格式包括:四倍精度(binary128) 。这是一个占用128位(16位元组)的二进制格式 , 其有效位数的精度为113位(约34位) 。
双精度(decimal64)和四精度(decimal128)十进制浮点格式 。这些格式与单精度(decimal32)格式一起 , 用于正确执行小数四捨五入 。
一半 , 也称为binary16 , 一个16位浮点值 。它正在使用NVIDIACg图形语言和openEXR标準 。
任何绝对值小于2整数都可以用单精度格式精确表示 , 绝对值小于2任何整数都可以用双精度格式精确表示 。而且 , 可以表示这样一个数字的2倍的广泛的权力 。这些属性有时用于纯粹的整数数据 , 在具有双精度浮点数但只有32位整数的平台上得到53位整数 。该标準指定了一些特殊的值 , 它们的表示形式:正无穷(+∞) , 负无穷(-∞) , 与普通(“正”)零不同的负零(-0)和“不是数值”NaNs) 。按照IEEE标準定义的浮点数比较与通常的整数比较有点不同 。负的和正的零比较相等 , 每个NaN比较不等于每个值 , 包括它本身 。除了NaN , 所有的值都严格小于+∞ , 严格大于-∞ 。有限的浮点数以与它们的值相同的方式排列(在实数集合中) 。内部表示浮点数通常从左到右被打包成一个计算机数据 , 作为符号位 , 指数栏位和有效数或尾数 。对于具有现存硬体实现的IEEE 754二进制格式(基本和扩展) , 它们分配如下: 类型标誌指数重要的领域总比特数指数偏差比特精度小数位数一半(IEEE 754-2008)1五10161511?3.3单18233212724?7.2双1115264102353?15.9x86扩展精度11564801638364?19.2四11511212816383113?34.0指数可以是正数 , 也可以是负数 , 二进制格式的数据存储为一个无符号数字 , 加上一个固定的“偏差” 。该栏位中所有0的值保留为零和低于正常的数字;全1的值保留给无穷大和NaN 。归一化数字的指数範围为[-126,127]为单精度 , [-1022,1023]为双精度 , 或[-16382,16383]为四 。规範化的数字不包括低于正常值 , 零 , 无穷和NaN 。在IEEE二进制交换格式中 , 标準化的有效位的前1位实际上并不存储在计算机数据中 。它被称为“隐藏”或“隐含”位 。正因为如此 , 单精度格式实际上有24位精度的有效位数 , 双精度格式有53位 , 四位有113位精度 。例如 , 上面显示的是π , 四捨五入到24位的精度 , 具有:sign = 0;