将 N 变量与数字进行比较时进行舍入。如何避免?

Rounding while comparing N variable with number. How to avoid?

大家好,新年快乐。 我有以下问题:一个 char 字段包含一个数量,我想进行以下检查:if wfile-dmbtr < 0.00

我使用的代码:

data: lv_dmbtr(18) type n.    
write wfile-dmbtr to lv_dmbtr.
replace first occurrence of '.' in lv_dmbtr with ''.
translate lv_dmbtr using ',.'.
if lv_dmbtr <= '0.00'.

问题出在 0.01 到 0.49 之间的值,程序很可能将它们四舍五入到 0 和 returns True.

dmbtr 金额具有以下掩码:12.235,99。有谁知道如何解决这个问题?

提前致谢。

埃利亚斯

埃利亚斯。也祝你新年快乐

类型 N 不允许使用小数(即使您可以在调试器中看到它,如果您强制使用这样的值)。这就是数字被四舍五入和条件评估 'seems' 失败的原因。

此外,在进行数字转换/格式化后,最好使用小数类型变量进行条件评估(例如数据元素类型MAXBT)。

示例:

DATA: lv_dmbtr(18) TYPE c,       " Used to be type N instead of pure CHAR.
      lv_aux       TYPE maxbt.


WRITE '0,01' TO lv_dmbtr.
REPLACE FIRST OCCURRENCE OF '.' IN lv_dmbtr WITH ''.
TRANSLATE lv_dmbtr USING ',.'.
CONDENSE lv_dmbtr.

lv_aux = lv_dmbtr.

IF lv_aux <= '0.00'.

  BREAK-POINT.

ELSE.

  BREAK-POINT.    " It should enter this bracket for the value 0,01

ENDIF.

希望对您有所帮助。