【ABAP】float类型输出删除多余的0


  DATA: lv_temp    TYPE string,
        lv_len     TYPE i,
        lv_decimal TYPE string,
        lv_integer TYPE string.

  lv_temp = cv_number_str.
  CONDENSE lv_temp.

  " 检查是否包含小数点
  IF lv_temp CA '.'.
    " 分割整数部分和小数部分
    SPLIT lv_temp AT '.' INTO lv_integer lv_decimal.

    " 去除小数部分末尾的零
    DO.
      lv_len = strlen( lv_decimal ).
      IF lv_len = 0.
        EXIT.
      ENDIF.
      lv_len = lv_len - 1.

      IF lv_decimal+lv_len(1) = '0'.
        lv_decimal = lv_decimal+0(lv_len).
      ELSE.
        EXIT.
      ENDIF.
    ENDDO.

    " 重新组合
    IF lv_decimal IS NOT INITIAL.
      cv_number_str = lv_integer && '.' && lv_decimal.
    ELSE.
      cv_number_str = lv_integer.
    ENDIF.
  ENDIF.

这段ABAP代码的主要功能是处理数字字符串,去除小数部分末尾多余的零。以下是代码的详细解析:

代码逻辑说明

  1. 初始化变量

    • lv_temp:临时存储输入的字符串
    • lv_len:用于记录字符串长度
    • lv_decimal:存储小数部分
    • lv_integer:存储整数部分
  2. 预处理

    lv_temp = cv_number_str.
    CONDENSE lv_temp.
    
    • 将输入字符串赋值给临时变量
    • 使用CONDENSE去除字符串中的多余空格
  3. 检查小数点

    IF lv_temp CA '.'.
    
    • 通过CA '.'检查字符串是否包含小数点
  4. 分割整数与小数部分

    SPLIT lv_temp AT '.' INTO lv_integer lv_decimal.
    
    • 以小数点作为分隔符,将字符串拆分为整数部分和小数部分
  5. 去除小数部分末尾的零

    DO.
      lv_len = strlen( lv_decimal ).
      IF lv_len = 0.
        EXIT.
      ENDIF.
      lv_len = lv_len - 1.
      IF lv_decimal+lv_len(1) = '0'.
        lv_decimal = lv_decimal+0(lv_len).
      ELSE.
        EXIT.
      ENDIF.
    ENDDO.
    
    • 循环检查小数部分的最后一个字符
    • 如果是0则移除,直到遇到非零字符或字符串为空时退出循环
  6. 重组结果

    IF lv_decimal IS NOT INITIAL.
      cv_number_str = lv_integer && '.' && lv_decimal.
    ELSE.
      cv_number_str = lv_integer.
    ENDIF.
    
    • 若小数部分非空,则拼接整数部分和小数部分
    • 若小数部分为空(全被移除),则仅保留整数部分

功能示例

假设输入 cv_number_str = '123.4500'

  1. 分割后:lv_integer = '123', lv_decimal = '4500'
  2. 循环移除末尾零:'4500' → '450' → '45'
  3. 结果重组:'123.45'

注意事项

  • 此代码仅处理包含小数点的数字字符串
  • 若输入为整数(如 '123'),则直接跳过处理
  • 通过CONDENSE确保字符串无多余空格,避免分割错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值