Engineering Format
oh well... this routine works passably well enough...(defun float-to-engineering-format-string (val)
  (if (or (zerop val)
          (and (<= 0.01 (abs val))
               (< (abs val) 10000)))
    ;; for values between 0.01 and 9,999 just use F format
    (format nil "~,3F" (float val 1.0))
    ;; Engineering notation
    (let* ((pwr (* 3 (floor (log (abs val) 10) 3)))
           (v   (/ val (expt 10 pwr))))
      (when (>= (round (abs v)) 1000)
        (incf pwr 3)
        (setf v (* 0.001 v)))
      (format nil "~,2Fe~d" v pwr)
      )))
David McClain
Chief Technical Officer
Refined Audiometrics Laboratory
4391 N. Camino Ferreo
Tucson, AZ  85750
email: dbm@refined-audiometrics.com
phone: 1.520.390.3995