ABAP 四舍五入函數
ABAP 中處理數據的函數方法很多,其中涉及到四舍五入的有兩個(可能還有更多):ROUND 和 HR_NZ_ROUNDING_DECIMALS
前者位於Basis功能開發包 SZME 里面,在標准中用於計量單位的計算;
后者主要用於HR模塊,位於 PB43 開發包,處理HR模塊中的主數據。
HR_NZ_ROUNDING_DECIMALS 函數可以直接輸入數值,然后在 CONV_DEC 參數中輸入需要保留的小數點即可輸出。
ROUND 函數則有點靈活,可以通過 SIGN 參數( ‘+’,’-’ )控制向上取舍,或者向下取舍。
例如:
輸入 88.54350 ,如果SIGN = ‘+’ ,保留2位小數,會得到: 88.55000;如果 SIGN = ‘-’,會得到:88.54000
輸入 -88.54350,如果SIGN = ‘+’ ,保留2位小數,會得到: -88.54000;如果 SIGN = ‘-’,會得到:-88.55000
查看示例:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
DATA
: dat
TYPE
p
DECIMALS
9
VALUE
'12.5445'
,
dat1
TYPE
p
DECIMALS
9 .
DATA
dat2
TYPE
p
DECIMALS
9
VALUE
'12.540'
.
* 方法一
CALL
FUNCTION
'HR_NZ_ROUNDING_DECIMALS'
EXPORTING
value_in = dat
conv_dec = 2
" 設置保留幾位小數
IMPORTING
value_out = dat1
EXCEPTIONS
no_rounding_required = 1
decimals_greater_than_10 = 2
rounding_error = 3
OTHERS
= 4.
WRITE
: /
'方法一(保留2位小數):'
.
WRITE
: / dat,
' => '
,dat1.
WRITE
: /
'----------------------------------------------------'
.
* 方法二
CALL
FUNCTION
'ROUND'
EXPORTING
decimals = 0
" 保留多少位小數
input = dat2
sign =
'+'
" + 向上取舍 - 向下取舍 (負數也一樣)
IMPORTING
output = dat1
" 輸出返回結果
EXCEPTIONS
input_invalid = 1
overflow = 2
type_invalid = 3
OTHERS
= 4.
WRITE
: /
'方法二(保留0位小數):'
.
WRITE
: / dat2,
' => '
,dat1.
WRITE
: /
'----------------------------------------------------'
.
|