3 ms·
I am aware of numeric towers and actually checked whether that was going on. sbcl 1.4.16 uses single floats: https://ideone.com/ruw5qi https://ideone.com/ruw5q
by reitzensteinm 7y ago
I am aware of numeric towers and actually checked whether that was going on.
sbcl 1.4.16 uses single floats:
https://ideone.com/ruw5qi https://ideone.com/ruw5qi
I don't know enough about Scheme to dig under the covers to see how it's being represented internally.
- verandacoffee 7y agosbcl (and other Common Lisps) uses what you want it to use: read-default-float-format (setf read-default-float-format 'single-float) (+ 0.1 0.2) => 0.3 (setf read-default-float-format 'double-float) (+ 0.1 0.2) => 0.30000000000000004 On LispWorks 7.0 I get 0.30000000000000005 for double-float. Hmm.
- sjamaan 7y agoScheme is the same. If you type a number with a dot in it, you'll get an "inexact" number, which is floating point. If you prefix it with #e, you'll get an exact representation of the entered number (so, e.g. #e0.1 gives you 1/10) The output of inexact numbers is typically truncated. In CHICKEN, you can use flonum-print-precision to tweak that. In an example, straight from the manual: > (flonum-print-precision 17) > 0.1 0.10000000000000001
- yellowapple 7y agoPer my other comment, SBCL's defaults still cause (= (- (+ 0.1 0.2) 0.3) 0) → T. I guess they're technically floats (or at the very least not rationals) given that (= 0.3 3/10) → NIL.