(float-nan-p number))
(prin1 number stream)
(multiple-value-bind (num expt) (sb!impl::scale-exponent (abs number))
- (let* ((expt (- expt k))
+ (let* ((k (if (= num 1.0) (1- k) k))
+ (expt (- expt k))
(estr (decimal-string (abs expt)))
(elen (if e (max (length estr) e) (length estr)))
spaceleft)
(when (and d (zerop d)) (setq tpoint nil))
(when w
(decf spaceleft flen)
- ;; See CLHS 22.3.3.2. "If the parameter d is
- ;; omitted, ... [and] if the fraction to be
- ;; printed is zero then a single zero digit should
- ;; appear after the decimal point." So we need to
- ;; subtract one from here because we're going to
- ;; add an extra 0 digit later. [rtoy]
- (when (and (zerop number) (null d))
- (decf spaceleft))
(when lpoint
(if (or (> spaceleft 0) tpoint)
(decf spaceleft)
(if atsign (write-char #\+ stream)))
(when lpoint (write-char #\0 stream))
(write-string fstr stream)
- (when (and (zerop number) (null d))
- ;; It's later and we're adding the zero
- ;; digit.
- (write-char #\0 stream))
(write-char (if marker
marker
(format-exponent-marker number))
:complaint
"cannot specify either colon or atsign for this directive"))
(interpret-bind-defaults ((count 1)) params
- (fresh-line stream)
- (dotimes (i (1- count))
- (terpri stream))))
+ (when (plusp count)
+ (fresh-line stream)
+ (dotimes (i (1- count))
+ (terpri stream)))))
(def-format-interpreter #\| (colonp atsignp params)
(when (or colonp atsignp)