“非标准化数”是带有保留指数值的非零浮点数,其中尾数的最高有效位为 0。通过使用非标准化格式,浮点数的范围可以扩展,但会失去精度。您无法控制浮点数以标准化形式还是非标准化形式表示;浮点包决定了表示形式。浮点包从不使用非标准化形式,除非指数变为小于可以标准化形式表示的最小值。下表显示了可在每种浮点类型的变量中存储的最小值和最大值。此表中所列的值仅适用于标准化浮点数;非标准化浮点数的最小值更小。请注意,在 80x87 寄存器中保留的数字始终以 80 位标准化形式表示;数字存储在 32 位或 64 位浮点变量(float 类型和 long 类型的变量)中时只篮海棕能以非标准化形式表示。 [1] 浮点类型 类型最小值最大值float1.175494351 E – 383.402823466 E + 38double2.2250738585072014 E – 3081.7976931348623158 E + 308如果存储比精度更重要,请考虑对浮点变量使用 float 类型。相反,如果精度是最重要的条件,则使用 double 类型。 [1] 浮点变量可以提升为更大基数的类型(从 float 类型到 double 类型)。当您对霉放雄浮点变量执行算术时,通常会出现提升。此算术始终以与具有最高精度的变量一样高的精度执行。例如,请考虑下列类型声明:float f_short;double f_long;long double f_longer;f_short = f_short * f_long;在前面的示例中,变量f_short提升到类型 double 并且与f_long相乘;然后,结果舍入到类型 float,然后赋给f_short。在以下示例中(使用前面示只记笑白例中的声明),将以浮点(32 位)精度对变量执行算术;结果随后将提升到 double 类型:f_longer = f_short * f_short;double f_long;long double f_longer;f_short = f_short * f_long;在前面的示例中,变量f_short提升到类型 double 并且与f_long相乘;然后,结果舍入到类型 float,然后赋给f_short。在以下示例中(使用前面示例中的声明),将以浮点(32 位)精度对变量执行算术;结果随后将提升到 doub