浮点数据和中间结果
如果在浮点运算中计算算术表达式中的任何操作,那么将计算整个表达式,就好像所有操作数都已转换为浮点,并且这些操作是使用浮点指令执行的一样。
浮点指令用于计算算术表达式 (如果该表达式满足以下任何条件):
- 接收器或操作数为
COMP-1,COMP-2,外部浮点或浮点文字。 - 指数包含小数位。
- 指数是包含指数或除法运算符的表达式, dmax 大于零。
- 内在函数是浮点函数。
在兼容性方式下,如果在浮点运算中计算表达式,那么用于对算术运算求值的精度确定如下:
- 如果所有接收方和操作数都是
COMP-1数据项,并且表达式不包含乘法或指数运算,那么将使用单精度。 - 在所有其他情况下,使用长精度。
每当将长精度浮点用于算术表达式中的一个操作时,将计算该表达式中的所有操作,就像使用了长浮点指令一样。
在扩展方式下,如果在浮点运算中计算表达式,那么用于对算术运算进行求值的精度确定如下:
- 如果所有接收方和操作数都是
COMP-1数据项,并且表达式不包含乘法或指数运算,那么将使用单精度。 - 如果所有接收器和操作数都是
COMP-1或COMP-2数据项,至少一个接收器或操作数是COMP-2数据项,并且表达式不包含乘法或指数运算,那么将使用长精度。 - 在所有其他情况下,使用扩展精度。
每当将扩展精度浮点用于算术表达式中的一个操作时,将计算该表达式中的所有操作,就像使用了扩展精度浮点指令一样。
警报: 如果浮点运算具有发生指数溢出的中间结果字段,那么作业将异常终止。
在浮点运算中求值的指数
在兼容性方式下,始终使用长浮点算术对浮点指数进行求值。 在扩展方式下,始终使用扩展精度浮点运算对浮点指数进行求值。
在 COBOL 中,负数上升到小数幂的值未定义。 例如, (-2) ** 3 等于 -8 ,但 (-2) ** ( 3.000001 ) 是未定义的。 当在浮点中对取幂进行求值并且可能未定义结果时,将在运行时对取幂进行求值以确定其是否具有整数值。 否则,将发出诊断消息。