四舍五入与小数截断

原帖地址:http://blog.chinaunix.net/u1/40527/showart.php?id=336723

 

众所周知,SAP的数据基本都是四舍五入的
但是,有些时候就是需要不要四舍五入,直接截断,怎么办?
 
这么办:
REPORT Z_BARRY_TEST_ROUND .
DATA: pp1 TYPE p DECIMALS 3,
      pp2 TYPE p DECIMALS 2,
      pp3 TYPE p DECIMALS 2,
      ii1 TYPE i .
pp1 = '1452.345'.
pp3 = pp1 .
ii1 = 2.
PERFORM noround USING    pp1 ii1
                CHANGING pp2.
WRITE: pp2,pp3.
*&--------------------------------------------------------------------*
*&      Form  noround
*&--------------------------------------------------------------------*
FORM noround USING     p1 i1
             CHANGING  p2.
  DATA: tmpn1(20) TYPE n ,
        tmpn2(20) TYPE n ,
        tmpc1(20) TYPE c .
  tmpc1 = p1.
  SPLIT tmpc1 AT '.' INTO tmpn1 tmpn2.
  CONCATENATE tmpn1 '.' tmpn2+0(i1) INTO tmpc1.
  p2 = tmpc1.
ENDFORM.                    "noround
 
 
或者:
REPORT   z_barry_test.

DATA : p1 TYPE  p DECIMALS  4 .

p1 = '3.456' .

CALL  FUNCTION  'ROUND'
  EXPORTING
    decimals       = 2
    input          = p1
    sign           = '-'  
  IMPORTING
    output         = p1
  EXCEPTIONS
    input_invalid = 1
    overflow      = 2
    type_invalid  = 3
    OTHERS         = 4 .

WRITE  p1.
 
Sign:
SPACE : no rounding (input = output)
'+' : round up
'-' : round down
'X' : commercial rounding
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值