unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* (+ 5.1 0.1)
@ 2009-07-13 10:57 leonut
  2009-07-13 12:21 ` Anselm Helbig
  0 siblings, 1 reply; 4+ messages in thread
From: leonut @ 2009-07-13 10:57 UTC (permalink / raw)
  To: help-gnu-emacs

First I used "emacs --no-init-file" to start my emacs-22.3, then I
typed (+ 5.1 0.1) in *scratch* buffer. However, when I evaluated this
expression, I got 5.199999999999999.
Can anyone tell me why did this happen?
I tried (+ 5.0 0.1) and (+ 5.2 0.1) and both gave the answers I had
expected.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: (+ 5.1 0.1)
  2009-07-13 10:57 (+ 5.1 0.1) leonut
@ 2009-07-13 12:21 ` Anselm Helbig
  2009-07-13 12:59   ` Teemu Likonen
  0 siblings, 1 reply; 4+ messages in thread
From: Anselm Helbig @ 2009-07-13 12:21 UTC (permalink / raw)
  To: help-gnu-emacs

Hi!

> First I used "emacs --no-init-file" to start my emacs-22.3, then I
> typed (+ 5.1 0.1) in *scratch* buffer. However, when I evaluated this
> expression, I got 5.199999999999999.
> Can anyone tell me why did this happen?
> I tried (+ 5.0 0.1) and (+ 5.2 0.1) and both gave the answers I had
> expected.

This is a fundamental problem with floating point numbers, something
similar happens in python:

  Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
  [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> 5.1 + 0.1
  5.1999999999999993

For an explanation why this is so, see e.g. this article:

  http://www.theregister.co.uk/2006/08/12/floating_point_approximation/

Or, of course, 

  http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

HTH, 

Anselm


-- 
Anselm Helbig 
mailto:anselm.helbig+news2009@googlemail.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: (+ 5.1 0.1)
  2009-07-13 12:21 ` Anselm Helbig
@ 2009-07-13 12:59   ` Teemu Likonen
  2009-07-13 13:31     ` leonut
  0 siblings, 1 reply; 4+ messages in thread
From: Teemu Likonen @ 2009-07-13 12:59 UTC (permalink / raw)
  To: help-gnu-emacs

On 2009-07-13 14:21 (+0200), Anselm Helbig wrote:

> This is a fundamental problem with floating point numbers, something
> similar happens in python:
>
>   Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
>   [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
>   Type "help", "copyright", "credits" or "license" for more information.
>   >>> 5.1 + 0.1
>   5.1999999999999993

Thanks for info. This is new to me too as I don't know much about
floating point numbers. For that particular example CLISP, a Common Lisp
implementation, gives the correct result:

    $ clisp -q -norc -x '(+ 5.1 0.1)'
    5.2

Emacs' arbitrary-precision calculator gives 5.2 too:

    (calc-eval "5.1 + 0.1")
    => "5.2"

>   http://www.theregister.co.uk/2006/08/12/floating_point_approximation/
>   http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

I'll certainly study these.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: (+ 5.1 0.1)
  2009-07-13 12:59   ` Teemu Likonen
@ 2009-07-13 13:31     ` leonut
  0 siblings, 0 replies; 4+ messages in thread
From: leonut @ 2009-07-13 13:31 UTC (permalink / raw)
  To: help-gnu-emacs

Thanks very much.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-07-13 13:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-13 10:57 (+ 5.1 0.1) leonut
2009-07-13 12:21 ` Anselm Helbig
2009-07-13 12:59   ` Teemu Likonen
2009-07-13 13:31     ` leonut

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).