The package can be installed through Quicklisp: (ql:quickload "decimals")
Link to the package source code and README file: DECIMALS.
This package introduces three public functions and one macro. See their own documentation for complete description. Here's a short introduction.
Function: PARSE-DECIMAL-NUMBER (string &key ...)
Examine a string for a decimal number and return it as a rational number.
DECIMALS> (parse-decimal-number "12,34" :decimal-separator #\,) 617/50
Function: FORMAT-DECIMAL-NUMBER (number &key ...)
Apply specified decimal number formatting rules to a number and return a formatted string.
DECIMALS> (format-decimal-number 20000/3 :round-magnitude -3 :decimal-separator "," :integer-group-separator " " :integer-minimum-width 7) " 6 666,667" ("" "6 666" "," "667")
DECIMALS> (loop for e from -5 upto 5 do (print (format-decimal-number (expt 10 e) :round-magnitude -5 :decimal-separator "," :integer-minimum-width 7 :integer-group-separator " " :fractional-minimum-width 7 :fractional-group-separator " "))) " 0,000 01" " 0,000 1 " " 0,001 " " 0,01 " " 0,1 " " 1 " " 10 " " 100 " " 1 000 " " 10 000 " "100 000 " NIL
Function: ROUND-HALF-AWAY-FROM-ZERO (number &optional (divisor 1))
A rounding function similar to CL:ROUND except that when number is exactly half-way between two integers round always away from zero. FORMAT-DECIMAL-NUMBER uses this rounding function by default.
Macro: DEFINE-DECIMAL-FORMATTER (name &body keyword-arguments)
Define a custom decimal number formatter function suitable for the ~/ directive of CL:FORMAT.
Tags: Library, Mathematics, Public Domain