数値処理

  • FLOOR
  • CEIL
  • ROUND
  • TRUNC
  • FRAC

 

ABAP言語が用意した演算子を利用して、通常の算術処理を行うことができます。

算術処理使用される演算子
加算 +
減算 -
乗算 *
除算 /
整数除算 DIV
整数除算の余り MOD

数字を四捨五入や切り上げ、切り捨てをして整数にまとめるには、関数や汎用モジュールの使用、言語固有の丸め処理を利用するなど、幾つかの方法があります。

関数の使用

以下のような関数を使用することができます。 

  • FLOOR 小数点以下切り捨て
  • CEIL 小数点以下切り上げ

例:

DATA: l_value(3) TYPE p DECIMALS 2, 
      l_result1(3) TYPE p DECIMALS 2. 
      
l_value= '923.36'.     
l_result = FLOOR( l_value ). "変数に「923.00」が保持されることになる 
l_result = CEIL( l_value ). "変数に「923.01」が保持されることになる 

 

汎用モジュールの使用

汎用モジュールROUNDを使用すれば、小数点以下を指定した桁数で切捨て、切上げ、四捨五入することができます。 

例:

DATA : l_value TYPE P DECIMALS 2.    "TYPE Pを利用 
DATA : l_result TYPE P DECIMALS 2.   "TYPE Pを利用 

l_value = '923.36'. 

*整数10の位で切り捨て 
CALL FUNCTION 'ROUND' 
 EXPORTING 
   DECIMALS = -2 "丸めが実行される小数点以下桁数、マイナス可 
   INPUT = l_value " 丸められる値 
   SIGN = '-' "+:切り上げ、-:切り捨て、その他:四捨五入 
 IMPORTING 
   OUTPUT = l_result "丸め後の値 
 EXCEPTIONS 
   INPUT_INVALID = 1 
   OVERFLOW = 2 
   TYPE_INVALID = 3 
   OTHERS = 4 . 
WRITE : / '整数10の位で切り捨て:' , l_value  , '->' , l_result . 

 

言語固有の丸め処理

ABAP言語は、値を変数に代入する際、変数が桁数不足の場合、自動的に四捨五入処理を行います。 

例:

DATA: l_value(3) TYPE p DECIMALS 2, 
      l_result1(3) TYPE p DECIMALS 0. 
      
l_value= '923.56'.     
l_result = l_value. "変数に「923.01」が保持されることになる 

 

 

数値の整数部取得

指定した数値より小さい最大の整数、または、指定した数値より大きい最小の整数を取得する

指定した数値より小さい最大の整数を取得するにはFLOOR関数を、指定した数値より大きい最小の整数を取得するには、CEIL関数を使います。

下の例1では、選択画面項目「p_dec」に入力した数値より小さい最大の整数と「p_dec」に入力した数値より大きい最小の整数が画面に表示されます。

例:

DATA:
  v_int1 TYPE i,
  v_int2 TYPE i.
 
PARAMETERS:
  p_dec(5) TYPE p DECIMALS 2.
 
v_int1 = floor( p_dec ).
v_int2 = ceil( p_dec ).
 
WRITE:
  v_int1,
/ v_int2.

 

<選択画面>
<実行結果画面>

数値の小数部取得

 数値の整数部分を取得するにはTRUNC関数を、数値の小数部分を取得するには、FRAC関数を使います。

下の例1では、選択画面項目「p_dec」に入力した数値より整数部分と小数部分が画面に表示されます。

例:
DATA:
  v_trunc TYPE  p DECIMALS 2,
  v_frac  TYPE  p DECIMALS 2.
 
PARAMETERS:
  p_dec TYPE p DECIMALS 2.
 
v_trunc = trunc( p_dec ).   "整数部分
v_frac  = frac( p_dec ).    "小数部分
 
WRITE:
  v_trunc,
/ v_frac.

 

<選択画面>
<実行結果画面>

数値の絶対値取得

絶対値を取得するには、ABS関数を使います。

下の例では、選択画面項目「p_dec」に入力した数値の絶対値が画面に表示されます。

例:
DATA:
  v_dec(5) TYPE p DECIMALS 2.
 
PARAMETERS:
  p_dec(5) TYPE p DECIMALS 2.
 
v_dec = abs( p_dec ).
 
WRITE:
  v_dec.

 

<選択画面>
<実行結果画面>

 

posted @ 2019-06-04 09:08  Park_SAP  阅读(3709)  评论(0)    收藏  举报