; 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)
OyBjb252ZXJ0IHJhdGlvIHRvIGRlY2ltYWwKCihkZWZpbmUgKGRlY2ltYWwgbnVtIGRlbm9tIGRpZ2l0cykKICAobGV0IGxvb3AgKChudW0gKCogKG1vZHVsbyBudW0gZGVub20pIDEwKSkKICAgICAgICAgICAgIChvdXQgKGNvbnMgI1wuIChyZXZlcnNlIChzdHJpbmctPmxpc3QKICAgICAgICAgICAgICAgKG51bWJlci0+c3RyaW5nIChxdW90aWVudCBudW0gZGVub20pKSkpKSkKICAgICAgICAgICAgIChkaWdpdHMgZGlnaXRzKSkKICAgIChpZiAoemVybz8gZGlnaXRzKQogICAgICAgIChsaXN0LT5zdHJpbmcgKHJldmVyc2Ugb3V0KSkKICAgICAgICAobG9vcCAoKiAobW9kdWxvIG51bSBkZW5vbSkgMTApCiAgICAgICAgICAgICAgKGNvbnMgKGludGVnZXItPmNoYXIgKCsgKHF1b3RpZW50IG51bSBkZW5vbSkgNDgpKSBvdXQpCiAgICAgICAgICAgICAgKC0gZGlnaXRzIDEpKSkpKQoKKGRpc3BsYXkgKGRlY2ltYWwgMzIyNyA1NTcgMzApKSAobmV3bGluZSk=