Function: calculator-number-to-string
calculator-number-to-string is a byte-compiled function defined in
calculator.el.gz.
Signature
(calculator-number-to-string NUM)
Documentation
Convert NUM to a displayable string.
Source Code
;; Defined in /usr/src/emacs/lisp/calculator.el.gz
(defun calculator-number-to-string (num)
"Convert NUM to a displayable string."
(cond
;; operators are printed here, the rest is for numbers
((not (numberp num)) (prin1-to-string (nth 1 num) t))
;; %f/%e handle these, but avoid them in radix or in user displayers
((and (floatp num) (isnan num)) "NaN")
((<= 1.0e+INF num) "Inf")
((<= num -1.0e+INF) "-Inf")
(calculator-output-radix
;; print with radix -- for binary, convert the octal number
(let* ((fmt (if (eq calculator-output-radix 'hex) "%x" "%o"))
(str (if calculator-2s-complement num (abs num)))
(str (format fmt (truncate str)))
(bins '((?0 "000") (?1 "001") (?2 "010") (?3 "011")
(?4 "100") (?5 "101") (?6 "110") (?7 "111")))
(str (if (not (eq calculator-output-radix 'bin)) str
(replace-regexp-in-string
"^0+\\(.\\)" "\\1"
(apply 'concat (mapcar (lambda (c)
(cadr (assq c bins)))
str)))))
(str (if (not calculator-radix-grouping-mode) str
(calculator-groupize-number
str calculator-radix-grouping-digits
calculator-radix-grouping-separator))))
(upcase (if (or calculator-2s-complement (>= num 0)) str
(concat "-" str)))))
((stringp calculator-displayer) (format calculator-displayer num))
((symbolp calculator-displayer) (funcall calculator-displayer num))
((eq 'std (car-safe calculator-displayer))
(apply 'calculator-standard-displayer
num (cdr calculator-displayer)))
((listp calculator-displayer)
(eval `(let ((num ',num)) ,calculator-displayer) t))
;; nil (or bad) displayer
(t (prin1-to-string num t))))