swirl
Guide to OmniMark 8   OmniMark home
docs home 
IndexConceptsTasksSyntaxLibrariesLegacy LibrariesErrors
 
  Related Syntax     Other Library Functions  
operator  

truncate

 
 

Library: Floating point number support (OMFLOAT)
Import: omfloat.xmd
Library: Binary coded decimal (BCD) numbers (OMBCD)
Import: ombcd.xmd
Return type: BCD or float

Returns: A BCD or floating point number truncated to a whole number. If a precision is specified, the value is truncated to the multiple of that precision.


Declaration

export overloaded bcd function
   truncate    value bcd b
            by value bcd base optional

export overloaded float function
   truncate    value float b
            by value float base optional


Purpose

Use truncate to cut off trailing digits from:

If you do not specify the precision, you will truncate to the nearest integer.

Import either ombcd.xmd or omfloat.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:

Calculate the area of a circle:

  import "ombcd.xmd" unprefixed
  process
      local bcd pi initial {"3.14179"}
      local bcd radius  initial {"75"}
      local bcd area
  
      set area to truncate (pi * radius * radius)
      output "Area of a circle (truncated) with radius of " 
          || "d" % radius 
          || " = " 
          || "d" % area 
          || "%n" 
  ; Output: "Area of a circle (truncated) with radius of 75 = 17672"

Floating Point Example:

Calculate the area of a circle:

  import "omfloat.xmd" unprefixed
  process
      local float radius  initial {"75"}
      local float area
  
      set area to truncate (pi * radius * radius)
      output "Area of a circle (truncated) with radius of " 
          || "d" % radius 
          || " = " 
          || "d" % area 
          || "%n"  
  ; Output: "Area of a circle (truncated) with radius of 75 = 17672"

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

  import "ombcd.xmd" unprefixed
  process
      local bcd exchange-rate initial {1.4994}
      local bcd us-price initial {125.00}
      local bcd canadian-price
      
      set canadian-price to truncate (us-price*exchange-rate) by 0.01
      output "US " 
          || "<$,NNZ.ZZ>" % us-price 
          || " = " 
          || "<$,NNZ.ZZ>" % canadian-price 
          || " CDN %n"
  ; Output: "US $125.00 = $187.42 CDN"

The precision specifier must be a power of 10, or an error occurs.

    Related Syntax
   round
   ceiling
   floor
 
  Other Library Functions
   ** (power)
   abs
   ceiling
   exp
   floor
   ln
   log10
   round
   sqrt
   truncate
 
 

Top [ INDEX ] [ CONCEPTS ] [ TASKS ] [ SYNTAX ] [ LIBRARIES ] [ LEGACY LIBRARIES ] [ ERRORS ]

OmniMark 8.2.0 Documentation Generated: March 13, 2008 at 3:27:39 pm
If you have any comments about this section of the documentation, please use this form.

Copyright © Stilo International plc, 1988-2008.