Pergunta

CL-USER> (exp 1)
2.7182817

Why? It should be 2.7182818 (rounded from 2.7182818284590452353602874713526624977572470936999595749669...)

SBCL 1.0.29.11.debian

Foi útil?

Solução

It is a rounding error inherent in the IEEE single-float format.

CL-USER> (exp 1.0d0)
2.718281828459045d0

Outras dicas

Learn more about floating point arithmetic and its 'problems' in this classic paper (PDF):

What Every Computer Scientist Should Know About Floating-Point Arithmetic

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top