Miser sur answer et answer de jamessan Anton, et la lecture du dernier fichier NOUVELLES:
On dirait que vous avez une version de Emacs 32 bits. Emacs a une limite pour les entiers qui est most-positive-fixnum
, qui a traditionnellement été 268435455
pour les versions 32 bits. Dans le dernier Emacs (23,2), le NEWS file indique:
** Le lecteur Lisp tours entiers qui sont trop grands/petits dans flotteurs. Pour l'instance , sur les machines où 536870911' is the largest integer, reading
536870912 'donne l'objet à virgule flottante `536870912.0'.
Cette modification concerne uniquement le lecteur Lisp ; Cela n'a aucune incidence sur la façon dont les objets entiers débordent.
Ainsi, 23,1 et plus tôt (sur un 32 bits Emacs), 2082844800.
a été lu comme un entier, mais est trop grand, l'amenant à déborder et se transformer en -64638848
. L'ajout du suffixe .0
dans 23.1 a forcé le lecteur LISP à traiter le nombre comme un nombre à virgule flottante, ce qui a provoqué l'exécution des maths comme prévu.
Dans Emacs 23.2, le lecteur effectue automatiquement cette conversion d'entier en nombre flottant si le nombre est trop important. Donc, si vous mettez à niveau, vous ne devrez pas vous inquiéter à ce sujet.
Merci - J'utilisais 23.1 sur OS X que j'ai compilé à partir de binaire, ce qui aurait dû être 64 bits, je pensais. Mais mon «plus-positif-fixnum» est 268435455 et '(+ 0 2082844800.)' => -64638848 ... merci à tous. – hatmatrix
Devinez J'ai été habitué à Fortran/Python et tel où a. était suffisant pour indiquer un nombre à virgule flottante ... – hatmatrix