我在Emacs Lisp 24.5.1中将整数除法转换为浮点解决方案时遇到了一些小问题。
(message "divide: %2.1f" (float (/ 1 2)))
"divide: 0.0"
我认为这个表达式首先计算1/2,发现截断后结果为0,然后将0.0赋值给浮点数。显然,我希望得到的是0.5。
我在这里看不到什么问题,请问还有其他信息吗?谢谢。
我在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)
)
许多编程语言都是这样工作的。