在Elisp中将Integer转换为Float

时间:2016-03-19 13:20:33

标签: emacs elisp division floating-point-conversion

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

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

我相信这个表达式首先计算1/2,截断后发现它为0,然后将0.0赋值给float。显然,我希望0.5。 我在这里看不到什么?感谢

1 个答案:

答案 0 :(得分:7)

(message "divide: %2.1f" (/ (float 1) 2)) 函数如果其参数中的至少一个是float,则执行浮点除法;如果所有参数都是整数,则执行整数商操作(舍入为0)。如果要执行浮点除法,请确保至少有一个参数是浮点数。

(/ 1.0 2)

(当然,如果它们是常数,你可以写(/ 1 2.0)group_events(G,Events)

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