我在Emacs Lisp 24.5.1中将整数除法转换为浮点解决方案时遇到了一些小问题。
(message "divide: %2.1f" (float (/ 1 2)))
"divide: 0.0"
我相信这个表达式首先计算1/2,截断后发现它为0,然后将0.0赋值给float。显然,我希望0.5。 我在这里看不到什么?感谢
答案 0 :(得分:7)
(message "divide: %2.1f" (/ (float 1) 2))
函数如果其参数中的至少一个是float,则执行浮点除法;如果所有参数都是整数,则执行整数商操作(舍入为0)。如果要执行浮点除法,请确保至少有一个参数是浮点数。
(/ 1.0 2)
(当然,如果它们是常数,你可以写(/ 1 2.0)
或group_events(G,Events)
)
许多编程语言都是这样工作的。