如何围绕进度编程

时间:2013-01-29 13:48:02

标签: rounding progress-4gl

我正在为MRP程序编写一份报告,它包含我为要订购的数量计算的字段。如果是小数点,我需要将数字向上舍入。

例如:2.33需要四舍五入到3,依此类推。

我试过了

oder = round(order,0).

但这只是让我2.00 我需要将该数字四舍五入到下一个整数。

4 个答案:

答案 0 :(得分:3)

function roundUp returns integer ( x as decimal ):

  if x = truncate( x, 0 ) then
    return integer( x ).
   else
    return integer( truncate( x, 0 ) + 1 ).

end.

display roundUp( 2.33 ).

答案 1 :(得分:0)

x = round(n + 0.4999999999, 0) 

...应该适用于n的负值

  • n = -2.0000001 ... x = -2
  • n = -2.5 ... x = -2
  • n = -2.9999999999 ... x = -2

roundUp()在所有上述n

的负值中解析为-1

答案 2 :(得分:0)

这也适用于负值。返回值有意保留为Integer,也可以将其保留为Decimal。

function roundUp returns integer 
( 
    input in-value as DECIMAL 
):

    def var x as decimal no-undo.
    def var y as decimal no-undo.

    if in-value < 0 then
    DO:
        x = truncate(in-value,0).     
        y =  in-value - x.      
        if abs(y) <= 0.5 then 
            return INTEGER(x).
        else 
            return INTEGER(round(in-value,0)).
    END.
    ELSE 
        return INTEGER(round(in-value,0)).

end function.

答案 3 :(得分:-1)

使用以下内容:

DEF VAR X AS decimal.
DEF VAR Y AS integer.

update
x with frame a.

Y = X - 1.
display y.
IF (( X - Y ) < 0.5)
THEN do:
DISPLAY round(x,0) + 1.
end.
ELSE DO :
DISPLAY round(x,0).
end.