gpt4 book ai didi

Emacs Lisp 数字运算(实际上,简单的加法)

转载 作者:行者123 更新时间:2023-12-01 04:39:51 29 4
gpt4 key购买 nike

这是我尝试在 emacs lisp 中进行一些计算时得到的...

(+ 2082844800. 1274511600.0)
=> 1209872752.0
(+ 2082844800.0 1274511600.0)
=> 3357356400.0

谁能告诉我这是怎么回事,最后用 ..0 表示 float 有什么区别?谢谢

最佳答案

以 Anton 的 answer 为基础和 jamessan 的 answer , 并阅读最新的 NEWS 文件:

看起来您有一个 32 位版本的 Emacs。 Emacs 对整数有一个限制,即 most-positive-fixnum,传统上对于 32 位构建是 268435455。在最新的 Emacs (23.2) 中,NEWS file表示:

** The Lisp reader turns integers that are too large/small into floats. For instance, on machines where 536870911' is the largest integer,
reading
536870912' gives the floating-point object `536870912.0'.

This change only concerns the Lisp reader; it does not affect how actual integer objects overflow.

因此,在 23.1 和更早版本(在 32 位 Emacs 上)中,2082844800. 被读取为一个整数,但太大,导致它溢出并变成 -64638848

在 23.1 中添加 .0 后缀强制 lisp 阅读器将数字视为 float ,从而导致数学结果如您所愿。

在 Emacs 23.2 中,如果数字太大,阅读器会自动为您完成从整数到 float 的转换。因此,如果您升级,就不必担心这一点。

关于Emacs Lisp 数字运算(实际上,简单的加法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2975653/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com