在 Elisp 中将整数转换为浮点数



我在Emacs Lisp 24.5.1中将整数除法转换为浮点解决方案时遇到了一些微不足道的问题。

(message "divide: %2.1f" (float (/ 1 2)))
"divide: 0.0"

我相信这个表达式首先计算 1/2,截断后发现它是 0,然后将 0.0 分配给浮点数。 显然,我希望是0.5。我在这里没有看到什么? 谢谢

如果 / 函数的至少一个参数是浮点数,则执行浮点除法;如果其所有参数都是整数,则执行整数商运算(向 0 舍入)。如果要执行浮点除法,请确保至少有一个参数是浮点型。

(message "divide: %2.1f" (/ (float 1) 2))

(当然,如果它们是常量,你可以写(/ 1.0 2)(/ 1 2.0)

许多编程语言都是这样工作的。

最新更新