2
的這工作得很好:得到一個字符串,而不是一個數量
[1]> ((lambda (x) (/ x x)) 5)
1
但這:
[2]> ((lambda (x y) (/ x y)) 5 2)
5/2
給我 '5/2',而不是2.5。我該如何解決它?
的這工作得很好:得到一個字符串,而不是一個數量
[1]> ((lambda (x) (/ x x)) 5)
1
但這:
[2]> ((lambda (x y) (/ x y)) 5 2)
5/2
給我 '5/2',而不是2.5。我該如何解決它?
Common Lisp儘可能執行合理的算術運算。如果你想要浮點,你必須提供至少一個浮點數作爲算術函數的輸入,或者對結果使用顯式強制函數。
((lambda (x y) (float (/ x y)) 5 2)
或
((lambda (x y) (/ x y)) 5.0 2)
理性算術通常比浮點更精確。考慮這個:
(setf x1 (/ 1 3)) => 1/3
(setf x2 (float (/ 1 3)) => 0.33333333
(* x1 3) => 1
(* x2 3) => 0.99999999
非常感謝您的解釋。 – edem 2013-04-22 19:03:36
這不是一個字符串,它是一個有理數。 – Barmar 2013-04-22 18:56:35
你能解釋一下嗎?我剛開始學習這門語言。 – edem 2013-04-22 18:59:11