问题
CL-USER> (exp 1)
2.7182817
Why? It should be 2.7182818 (rounded from 2.7182818284590452353602874713526624977572470936999595749669...)
SBCL 1.0.29.11.debian
回答1:
It is a rounding error inherent in the IEEE single-float format.
CL-USER> (exp 1.0d0)
2.718281828459045d0
回答2:
Learn more about floating point arithmetic and its 'problems' in this classic paper (PDF):
What Every Computer Scientist Should Know About Floating-Point Arithmetic
来源:https://stackoverflow.com/questions/4771346/exp-in-sbcl-is-wrong