今天在NW7里面测试了一段代码,那几个数学函数返回结果竟然是错的,让我大吃一惊,且看代码:

DATA n TYPE p DECIMALS 2.
DATA m TYPE p DECIMALS 2 VALUE '-5.55'.

n = abs( m ). WRITE: 'ABS: ', n.
n = sign( m ). WRITE: / 'SIGN: ', n.
n = ceil( m ). WRITE: / 'CEIL: ', n.
n = floor( m ). WRITE: / 'FLOOR:', n.
n = trunc( m ). WRITE: / 'TRUNC:', n.
n = frac( m ). WRITE: / 'FRAC: ', n.


Write 出来的结果如下:

ABS:               5.55
SIGN:              0.01-
CEIL:              5.55-
FLOOR:             5.55-
TRUNC:             5.55-
FRAC:              0.00

这结果显然是错的。

 

然而,当我将以上代码Copy到另外一个系统里面运行时,发现结果又对了。

另一个系统的运行结果:

ABS:               5.55
SIGN:              1.00-
CEIL:              5.00-
FLOOR:             6.00-
TRUNC:             5.00-
FRAC:              0.55-

这个结果才是对的嘛

同样的代码在不同的sap系统里面竟然结果不同(未涉及数据库),这是为什么捏?(经测试和user的个人设置无关)