在Elisp中将Integer转换为Float

Cha*_*d P 2 emacs elisp division floating-point-conversion

我在Emacs Lisp 24.5.1中将整数除法转换为浮点解决方案时遇到了琐碎的问题.

(message "divide: %2.1f" (float (/ 1 2)))
"divide: 0.0"
Run Code Online (Sandbox Code Playgroud)

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

Gil*_*il' 8

/如果其参数中的至少一个是float,则函数执行浮点除法;如果所有参数都是整数,则函数执行整数商操作(舍入为0).如果要执行浮点除法,请确保至少有一个参数是浮点数.

(message "divide: %2.1f" (/ (float 1) 2))
Run Code Online (Sandbox Code Playgroud)

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

许多编程语言以这种方式工作.