浮点数据和中间结果

如果在浮点运算中计算算术表达式中的任何操作,那么将计算整个表达式,就好像所有操作数都已转换为浮点,并且这些操作是使用浮点指令执行的一样。

浮点指令用于计算算术表达式 (如果该表达式满足以下任何条件):

  • 接收器或操作数为 COMP-1COMP-2,外部浮点或浮点文字。
  • 指数包含小数位。
  • 指数是包含指数或除法运算符的表达式, dmax 大于零。
  • 内在函数是浮点函数。

在兼容性方式下,如果在浮点运算中计算表达式,那么用于对算术运算求值的精度确定如下:

  • 如果所有接收方和操作数都是 COMP-1 数据项,并且表达式不包含乘法或指数运算,那么将使用单精度。
  • 在所有其他情况下,使用长精度。

每当将长精度浮点用于算术表达式中的一个操作时,将计算该表达式中的所有操作,就像使用了长浮点指令一样。

在扩展方式下,如果在浮点运算中计算表达式,那么用于对算术运算进行求值的精度确定如下:

  • 如果所有接收方和操作数都是 COMP-1 数据项,并且表达式不包含乘法或指数运算,那么将使用单精度。
  • 如果所有接收器和操作数都是 COMP-1COMP-2 数据项,至少一个接收器或操作数是 COMP-2 数据项,并且表达式不包含乘法或指数运算,那么将使用长精度。
  • 在所有其他情况下,使用扩展精度。

每当将扩展精度浮点用于算术表达式中的一个操作时,将计算该表达式中的所有操作,就像使用了扩展精度浮点指令一样。

警报: 如果浮点运算具有发生指数溢出的中间结果字段,那么作业将异常终止。

在浮点运算中求值的指数

在兼容性方式下,始终使用长浮点算术对浮点指数进行求值。 在扩展方式下,始终使用扩展精度浮点运算对浮点指数进行求值。

在 COBOL 中,负数上升到小数幂的值未定义。 例如, (-2) ** 3 等于 -8 ,但 (-2) ** ( 3.000001 ) 是未定义的。 当在浮点中对取幂进行求值并且可能未定义结果时,将在运行时对取幂进行求值以确定其是否具有整数值。 否则,将发出诊断消息。

在浮点运算中求值的内部函数

在兼容性方式下,浮点内部函数始终返回长 (64 位) 浮点值。 在扩展 或完全 方式下,浮点内部函数始终返回扩展 或完全 精度 (128 位) 浮点值。

使用浮点运算对至少具有一个浮点自变量的混合函数进行求值。

相关参考资料
中间结果术语
ARITH