SAP ABAP 数字类型精讲

您所在的位置:网站首页 计数型变量 SAP ABAP 数字类型精讲

SAP ABAP 数字类型精讲

2023-12-14 05:58| 来源: 网络整理| 查看: 265

ABAP/4有3种数字类型(数字型)。 (1)整数型 I ·值范围为-231-2147483648)~231-1(2147483647)。 ·只支持整数类型。 ·非整数型数据会进行四舍五入(Round)。 ·用于计算行数、条目数、索引值等。 (2)小数型Packed numbers of Type P ·允许有小数位。 ·可用长度为1~16,小数位最大长度为14位。 ·程序属性设置如[图2-9]所示,应选择Fixed point arithmetic。若不选择,类型P就没有意义,与整数类型相同。 ·常使用于精度比较高的数据。 (3)浮点型F

·值范围为1×10307~1×10308。 ·用于定义指数(exponent),因此需要调用“FLTP_CHAR_CONVERSION”函数把其类型转换成其他数据类型后才可以输出。

·类型F转换成二进制时会发生进位误差。 ·若要显示高精度的数据,则应该使用类型P。 ·数值较大或者不需要进行四舍五入时可以使用类型F(因为在取近似值时使用,因此使用时需要注意)。

类型F、I更接近于机器代码,因此执行演算时类型F、I比P速度快(差异不明显)。

创建程序时如果不选择Fixed point arithmetic,使用Packed numbers(类型P、CURR、 QUAN)类型时,则小数位会被忽略。

如果不选择Fixed point arithmetic复选框执行下面所示的实例,则结果会显示“231”。

DATA gv_1 TYPE p DECIMALS 1 VALUE '1.1'. DATA gv_2 TYPE p DECIMALS 1 VALUE '2.1'. DATA gv_3 TYPE p. gv_3=gv_1*gv_2. WRITE gv_3.

ABAP程序的数字类型,如[表2-3]所示一共分为3种。此外,还存在显示字符串类型的数字类型N(Numeric text field),此类型是用1B表示一位数字的字符串类型。这是1字节表示1位数字的字符串类型。

(1)类型 l

定义-2^31(-2147483648)~2^31-1(2147483647)之间的整数,用单位bit 计算长度的数据类型。它采用的是二进制方法,二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。因此此类型可以表示的最大数字为2^n ,且最多可以表示的数字个数为2^n-1个。类型I是4B=32bit,因此可以显示的最大数字是2^32。 再加上负数可以表示的数字范围是-2^31~2^31-1。

(2)类型P可用长度为1~16B,一般为8B。类型P只存在于ABAP语言且来源于“Two decimal digits are packed into one byte.”中的英语单词 packed。此类型1字节由两位数字构成,最后一位是符号位。可用长度为16B,代表着可以显示2*16=32bit的数字。计算类型P时,由于涉及软件因素,因此比类型I、F执行速度要慢。 可变长度是指变量名后可以指定的变量长度(1~16)。

DATA gv_p(16) TYPE P.

如下所示,如果不指定变量长度,则其默认长度为8B。

DATA gv_p TYPE P.

使用DECIMALS关键字指定小数位,其小数位最多可以指定14位。下面定义的变量gv_p占两位小数位。

DATA gv_p TYPE P decimal 2

DATA gv_1 TYPE p. DATA gv_2 TYPEp DECIMALS 14. DATA gv_3(16) TYPE p. gv_1 = '123456789012345'. gv_2 = '0.12345678901234'. gv_3 = '1234567890123456789012345678901'. WRITE:/gv_1. WRITE:/gv_2. WRITE:/gv_3.

.例中的gv_1变量没有指定长度,所以字符只能占15位,因此默认长度为8B=15bit(符号占一位)。如果gv_1='1234567890123456',超过了类型P的可变长度,则会发生Overflow Dump Error 错误。如Overflow when converting from 1234567890123456。

(3)类型F

值范围为1×10^-307~1×10^308,以指数(exponent)形式显示,因此要调用函数FLTP_CHAR_CONVERSION 把类型转换为其他数据类型后才能输出。

类型F转换成二进制时会发生进位错误,因此这种类型属于所谓的科学计算法,精确度要求高的计算建议使用类型P而不是类型F。

浮点型(Floating Point Number)可以移动小数位,因此可以使用有限的位数提高其计算精度。

浮点型显示形式为尾数(mantissa)加指数(exponent)。浮点型中“12345” 和“12345×10^0”的表示是相同的,另外有下列几种表示形式。 1234500×10^-2

0.001234×10^6

0.12345×10^5

上述浮点型数据由如下4个部分组成。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3