在下面的代码中,lv_sum_openamount应该是3.45,但是程序将数字舍入为3。
我想要lv_sum_openamount 3。
我怎么能这么做?
DATA(lv_sum_openamount) = REDUCE dmbtr_cs( INIT sum = 0 FOR wa_amnt IN <fs_comp> NEXT sum += wa_amnt-open_amount.
LOOP AT <fs_comp> ASSIGNING <fs_comp_alv>.
TRY.
<fs_comp_alv>-pull_amount = ( <fs_pack>-reamount / lv_sum_openamount ) * <fs_comp_alv>-open_amount.
CATCH cx_sy_zerodivide.
<fs_comp_alv>-pull_amount = 0.
ENDTRY.
ENDLOOP.发布于 2022-05-02 06:54:41
罪魁祸首是INIT sum = 0部分。
0是一个整数,因此sum的类型将自动派生为整数。这意味着REDUCE-loop使用整数算法,因此其输出被四舍五入。
试一试INIT sum = CONV dmbtr_cs( 0 )。这将将0的文字转换为所需的类型,然后强制sum也得到该类型。
https://stackoverflow.com/questions/72055328
复制相似问题