; convert ratio to decimal

(define (decimal num denom digits)
  (let loop ((num (* (modulo num denom) 10))
             (out (cons #\. (reverse (string->list
               (number->string (quotient num denom))))))
             (digits digits))
    (if (zero? digits)
        (list->string (reverse out))
        (loop (* (modulo num denom) 10)
              (cons (integer->char (+ (quotient num denom) 48)) out)
              (- digits 1)))))

(display (decimal 3227 557 30)) (newline)