数値処理

 

このトピックでは、ABAP言語で数値処理の方法を取り上げて説明します。

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」が保持されることになる

数値の整数部取得

数値の整数部のみを取得するには、関数TRUNCを使用することができます。

数値の小数部取得

数値の小数部のみを取得するには、関数FRACを使用することができます。