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 |
export overloaded float function ceiling value float x by value float precision optional export overloaded bcd function ceiling value bcd x by value bcd precision optional
Use ceiling to round up:
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).
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 set area to ceiling (pi * radius * radius) 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 } local bcd canadian-price 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.
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 set area to ceiling (pi * radius * radius) output "Area of circle with radius " || "d" % radius || " is at most " || "d" % area || "%n"