[cmucl-ticket] Re: #1: prin1 and ~E produce different outputs.
cmucl
cmucl-devel at common-lisp.net
Fri Aug 11 21:32:41 UTC 2006
#1: prin1 and ~E produce different outputs.
------------------------+---------------------------------------------------
Reporter: anonymous | Owner: rtoy
Type: defect | Status: assigned
Priority: minor | Milestone:
Component: Core | Version: 19c
Resolution: | Keywords: printing
------------------------+---------------------------------------------------
Old description:
> (let ((x (random 1d-3)))
> (values (prin1-to-string x) (format nil "~E" x)))
>
> will produce different significant digits. I think the problem is in ~E
> which calls lisp::scale-exponent to scale the number between 0.1 and 1.
> I think we could just call flonum-to-digits which will give us the digits
> and the exponent. We can massage that into the desired digits and
> exponent as in scale-exponent, but we won't have the round-off problem.
>
> Maybe.
New description:
{{{
(let ((x (random 1d-3)))
(values (prin1-to-string x)
(format nil "~E" x)))
}}}
will produce different significant digits. I think the problem is in ~E
which calls lisp::scale-exponent to scale the number between 0.1 and 1. I
think we could just call flonum-to-digits which will give us the digits
and the exponent. We can massage that into the desired digits and
exponent as in scale-exponent, but we won't have the round-off problem.
Maybe.
--
Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/1>
cmucl <http://common-lisp.net/project/cmucl>
cmucl
More information about the cmucl-ticket
mailing list