• 数値処理


    • 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.
    
    <選択画面>
    <実行結果画面>
  • 相关阅读:
    还做开发!重新学习纪念一下先
    NOD32中小企业服务器版部署方法
    我买车了,写个总结
    Windows Server 2008 各个版本微软官方下载
    SQLServer2008过程中因性能计数器不一致导致无法安装的解决方法
    自建邮件服务器的注意事项
    01.Linux下C语言编程环境检查
    wcf部署到IIS宿主上报错
    Win7 开发WCF时 提示 进程不具有此命名空间的访问权限
    SQLServer2008设置 开启远程连接 (转)
  • 原文地址:https://www.cnblogs.com/yjyongil/p/10971528.html
Copyright © 2020-2023  润新知