数字和算术运算
REXX 以尽可能自然的方式定义通常的算术运算 (加法,减法,乘法和除法)。 这真正的意思是,所遵循的规则是那些在学校和学院里进行常规教学的规则。
然而,在这些设施的设计过程中发现,不幸的是,这些规则因人而异 (确实比一般所欣赏的多得多) ,因地而异,因人而异,因人而异,因地而异,而且并非总是可以预测的。 因此,此处描述的算术是一种妥协,尽管不是最简单的) 应该在大多数应用程序中提供可接受的结果。
数字介绍
数字(即作为REXX算术运算和内置函数输入的字符串)可以非常灵活地表示。 允许使用前导和尾部空格,并且可以使用指数表示法。
12 /* a whole number */
'-76' /* a signed whole number */
12.76 /* decimal places */
' + 0.003 ' /* blanks around the sign and so forth */
17. /* same as "17" */
.5 /* same as "0.5" */
4E9 /* exponential notation */
0.73e-7 /* exponential notation */
在指数表示法中,一个数字包含一个指数,即使用该数字前需乘以10的幂次。 指数表示小数点的位置。 因此,在前面的例子中, 4E9 只是 4000000000 的简写,而 0.73e-7 是 0.000000073 的简写。
算术运算符包括加法( + )、减法( - )、乘法( * )、幂( ** )、除法( / )、前缀加( + )和前缀减( - )。此外,还有两个除法运算符:整数除( % )除以并返回整数部分;余数( // )除以并返回余数。
- 结果计算到最大有效数字(默认为
9,但您可以通过NUMERIC DIGITS指令更改此值,以获得所需的精度)。 因此,如果结果需要超过9位数字,通常会四舍五入到9位数字。 例如,2除以3的结果是 0.666666667 (需要无限多的数字才能达到完美的精确度)。 - 除除法和幂运算外,保留小数点后的零(这与大多数流行的计算器不同,它们会删除结果小数部分的所有零)。 例如:
这种行为在大多数计算中(尤其是财务计算)都是可取的。2.40 + 2 -> 4.40 2.40 - 2 -> 0.40 2.40 * 2 -> 4.80 2.40 / 2 -> 1.2如有必要,您可以使用STRIP功能(见 STRIP )或除以1来删除尾随的零。
- 零结果总是用一位数字
0表示。 - 指数形式用于根据数值和数字位数设置(默认为
9)得出结果。 如果小数点前所需位数超过数字位数设置,或者小数点后所需位数超过数字位数设置的两倍,则该数字将以指数形式表示:1e6 * 1e6 -> 1E+12 /* not 1000000000000 */ 1 / 3E10 -> 3.33333333E-11 /* not 0.0000000000333333333 */
如何确定数值设置
要确定数字选项的当前设置,请使用内置函数DIGITS、FORM和FUZZ。 这些函数分别返回数字位数、数字格式和数字模糊度的当前设置。
算术运算中可能出现的错误
- 溢出或下溢
如果结果的指数部分超出语言处理器可以处理的范围,且结果是根据数字位数和数字格式的当前设置进行格式化的,则会发生此错误。 该语言定义了指数部分的最低能力,即以默认精度精确表示的最大整数。 因为默认精度为
9, REXX for CICS® 支持指数范围-999999999到999999999。因为这样允许(非常大的)指数,溢出或下溢被视为语法错误。
- 存储器不足
计算和中间结果需要存储空间,有时算术运算可能会因为存储空间不足而失败。 这通常被视为终止错误,而非计算错误。
算术设施的定义
以下主题给出了REXX语言算术功能的精确定义。