2016-03-19 50 views
1

Emacs Lisp 24.5.1'de tamsayı bölüşümünü bir kayan nokta çözümüne dönüştürmede çok önemli sorunlar yaşıyorum.Tamsayı Float'ta Float'a Dönüştürme

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

Bu sentezleme ilk 1/2 hesaplama inanıyoruz, 0 bulur, daha sonra kesilmesi şamandıraya 0.0 ayarlandıktan sonra. Açıkçası, 0,5 umuyorum. Burada neyi görmüyorum? Teşekkürler

cevap

4

/ işlevi, argümanlarının en az biri bir floatsa ve tüm argümanları tamsayı olduğunda bir tamsayı bölümü işlemi (0'a yuvarlanırsa) bir kayan nokta bölümü gerçekleştirir. Kayan noktalı bir bölümleme yapmak isterseniz, argümanlardan en az birinin bir kayan olduğundan emin olun.

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

(onlar sabitleri eğer ya elbette sadece (/ 1.0 2) veya (/ 1 2.0) yazabilir)

Birçok programlama dilleri bu şekilde çalışır.

+0

Çok teşekkür ederim! İçlerinden biri yüzer olduğu sürece sonuç bir yüzdür. Bunu biliyordum, ama Lisp'i öğrenmemi bir şekilde hipnotize ediyordu. Teşekkürler –

+1

Elisp kılavuzu, node [Aritmetik İşlemler] (http://www.gnu.org/software/emacs/manual/html_node/elisp/Arithmetic-Operations.html) bunu açıklıyor. – Drew