Ah, actually this can be implemented for #e12345.6789 by first flooring and printing that out ("12345") then deducting that from the value (=> 0.6789) and then doing * 10 and |truncate| up to eq? 0 - that works. Perhaps it'd even be quite close to optimum speed?
I.e. #e12345.6789 (floor #) (- ## #) , and then repeat (eq? # 0) (* ## 10) (truncate #) (- ## #).
2014/1/15 Mikael mikael.rcv@gmail.com
Dear Brad or Marc and list,
Curious, so you can parse into Gambit a decimal number with infinite precision, with exactness, by just appending "#e" to it i.e. > (define (string->exact-number s) (string->number (string-append "#e" s)))
(string->exact-number "1.23478289348923749872394728934")
61739144674461874936197364467/50000000000000000000000000000
Is there any way to do the opposite? All I see number->string give is "61739144674461874936197364467/50000000000000000000000000000"
- how would the definition of an exact-number->string look that produced
an output with decimals, i.e. something that gave "1.23478289348923749872394728934" or "#e1.23478289348923749872394728934" back?
I understand there are cases with unlimited number of decimals i.e. 1/3, a typechecker for that would be awesome.
Thanks, Mikael