# ceiling

operator

 Library: Floating point number support (OMFLOAT) Import : omfloat.xmd Library: Binary coded decimal numbers (OMBCD) Import : ombcd.xmd Returns: argument rounded up to the specified precision

Declaration
```export overloaded float function
ceiling    value float x
by value float precision optional

ceiling    value bcd x
by value bcd precision optional
```

Purpose

Use ceiling to round up:

• a floating point number, or
• a BCD number.

If you include the keyword `by` and specify the precision, ceiling will round up to the multiple of the precision you have specified.

If you do not include the keyword `by` and do not specify the precision, ceiling will round up to the next integer whose value is greater than the expression.

For values less than zero, `ceiling` works like `truncate`. For values greater than zero, `ceiling` rounds up to the next whole number greater than or equal to the original value.

Import either `omfloat.xmd` or `ombcd.xmd` in your program after deciding whether you want BCD mathematics (excellent for financial calculations) or floating point mathematics (excellent for extremely large numbers).

### BCD Example:

The following excample calculates the area of a circle.

```  import "ombcd.xmd" unprefixed

process
local bcd pi     initial { "3.14179" }
local bcd radius initial { "74" }
local bcd area

output "area of circle with radius " || "d" % radius || " = " || "d" % area || "%n"
```

You can specify the precision of the truncation/rounding. The following program uses a precision of 0.01 to truncate/round the value at the whole cents position:

```  import "ombcd.xmd" unprefixed

process
local bcd exchange-rate  initial { 1.4356 }
local bcd us-price       initial { 129.95 }

set canadian-price to ceiling (us-price * exchange-rate) by bcd 0.01
output "US " || "<\$,NNZ.ZZ>" % us-price || " is at most " || "<\$,NNZ.ZZ>" % canadian-price || " CDN %n"
```

The precision specifier must be a power of 10.

### Floating Point Example:

The following example uses `omfloat.xmd` to achieve the same result as the first example: calculating the area of a circle.

```  import "omfloat.xmd" unprefixed

process
local float radius initial { 74 }
local float area