[plt-scheme] Printing
As it happens, I wanted to do this last week.
Here is my solution:
(define (format-float float digits)
(let* ((numerals (number->string (round (* (inexact->exact float)
(expt 10 digits)))))
(length (string-length numerals))
(dot (- length digits)))
(string-append
(if (< dot 0) "0" (substring numerals 0 dot))
"."
(if (< dot 0)
(string-append (make-string (- dot) #\0) numerals)
(substring numerals dot length)))))
On 10/15/05, Chongkai Zhu <mathematica at citiz.net> wrote:
> You could also try SRFI-48. I have already port it into
> PLT Scheme. The code is now available from Schematics CVS.
> One reason it is not in PLT now is that when doing the
> port, I find several bugs in the reference implementation.
> Although these bugs are fixed now, maybe there will be other
> bugs. Should I insert the existin code into PLT?
>
> Chongkai
>
> >This is a really simple question, but I can't find the answer anywhere (help-desk, google, etc.). How do you control, how many decimal places get printed with a floating pointer number.
> >
> >For example I want somthing like:
> >
> >(define PI 3.1479)
> >
> >(printf "~1.2a\n" PI) => 3.14
> >
> > or
> >
> >(printf "~a\n" (decimal-places PI 2)) => 3.14
> >
> >
> >Thanks,
> >
> >Evan
> >
>
>
>
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
--
~jrm