需求说明
四舍五入是一个比较常见的需求,这里总结一下。
实现方式
- 通过函数HR_NZ_ROUNDING_DECIMALS,通过这种方式的时候遇到了问题,在本地测试时是正常的,在PRD测试时出了问题,调试了很多次没有解决,最后采用了其他方式
DATA: l_data TYPE p DECIMALS 3 VALUE '1.000'.
DATA: l_data1 TYPE p DECIMALS 3.
DATA:lv_zfre LIKE zmmtydanf-zfreje.
CALL FUNCTION 'HR_NZ_ROUNDING_DECIMALS'
EXPORTING
value_in = l_data
conv_dec = 2
IMPORTING
value_out = l_data1
EXCEPTIONS
no_rounding_required = 1
decimals_greater_than_10 = 2
rounding_error = 3
OTHERS = 4.
cl_demo_output=>display( l_data1 ).
- 通过函数ROUND
CALL FUNCTION 'ROUND'
EXPORTING
decimals = 0 " 保留多少位小数
input = lv_input
sign = 'X' " X 四舍五入 向上取舍 - 向下取舍 (负数也一样)
IMPORTING
output = lv_output " 输出返回结果
EXCEPTIONS
input_invalid = 1
overflow = 2
type_invalid = 3
OTHERS = 4 .
- 通过 P类型接收,可以实现四舍五入
DATA : lv_data TYPE p DECIMALS 3 .
DATA : lv_data1 TYPE p DECIMALS 2 .
lv_data1 = lv_data .