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

4

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

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

我认为这个表达式首先计算1/2,发现截断后结果为0,然后将0.0赋值给浮点数。显然,我希望得到的是0.5。

我在这里看不到什么问题,请问还有其他信息吗?谢谢。

1个回答

12

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

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

(或者如果它们是常量,你可以直接写 (/ 1.0 2) 或者 (/ 1 2.0)

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


非常感谢!只要其中一个是浮点数,结果就是浮点数。我知道这一点,但学习Lisp让我陷入了一种催眠状态。谢谢。 - c3ad-io
1
Elisp手册,节点算术运算有详细解释。 - Drew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接