
Ketil Z. Malde
I.e. for 3.14, allow any rational number in [3.14,3.15), or perhaps (3.135,3.145]? Or restrict it to just the rational number in range with the least total digits?
We can get this effect using a version of (%) adapted specifically for converting decimal floating-point constants. Thus: Data.Ratio> 31415926536%1000000000 3926990817 % 125000000 Data.Ratio> let n %% d = approxRational (n%d) (1%(2*d)) in 31415926536 %% 10000000000 312689 % 99532 We can imagine the compiler replacing floating constants by fromRational (n%%d) rather than fromRational (n%d). Of course, then trailing zeros suddenly become significant: Data.Ratio> let n %% d = approxRational (n%d) (1%(2*d)) in 314 %% 100 22 % 7 Data.Ratio> let n %% d = approxRational (n%d) (1%(2*d)) in 3140 %% 1000 135 % 43 This might be good or bad, depending on your perspective. -Jan-Willem Maessen jmaessen@alum.mit.edu
participants (1)
-
jmaessen@alum.mit.edu