2016-03-19 20 views
1

Emacs Lisp 24.5.1で整数除算を浮動小数点型に変換するのに些細な問題があります。Elispで整数を浮動小数点に変換する

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

私は、この式が最初に1/2を計算し、切り捨てられた後に0であり、次にfloatに0.0を割り当てると考えます。明らかに、私は0.5を望んでいる。 私はここで何が見えないのですか?ありがとう

答えて

4

/関数は、少なくとも1つの引数が浮動小数点である場合は浮動小数点除算を実行し、すべての引数が整数の場合は整数商演算(0に丸められます)を実行します。浮動小数点除算を実行する場合は、引数の少なくとも1つがfloat型であることを確認してください。

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

(またはコースの彼らが定数ならあなただけ(/ 1.0 2)または(/ 1 2.0)を書くことができます)

多くのプログラミング言語には、このように動作します。

+0

ありがとうございました!それらのうちの1つが浮動小数点数である限り、結果は浮動小数点です。私はそれを知っていましたが、Lispを学ぶことは私をある意味で催眠させました。ありがとう –

+1

Elispマニュアル、ノード[算術演算](http://www.gnu.org/software/emacs/manual/html_node/elisp/Arithmetic-Operations.html)では、これについて説明しています。 – Drew

関連する問題