Search code examples
clips

Round off floating point number to two decimal places in CLIPS


CLIPS gives a floating point number upto many decimal places.

e.g

CLIPS> ( / 4 3)
1.33333333333333

How do I get a value rounded off to two decimal places (1.33 in this case)


Solution

  •          CLIPS (6.31 6/12/19)
    CLIPS> (bind ?n (/ 4 3))
    1.33333333333333
    CLIPS> (/ (integer (* ?n 100)) 100)
    1.33
    CLIPS> 
    (deffunction precision (?num ?digits)
      (bind ?m (integer (** 10 ?digits)))
      (/ (integer (* ?num ?m)) ?m))
    CLIPS> (precision ?n 2)
    1.33
    CLIPS> (precision ?n 4)
    1.3333
    CLIPS> (precision ?n 0)
    1.0
    CLIPS>