Kaynak: digg.com
CL-USER> (- (- 1 0.9) 0.1) 2.2351742e-8 CL-USER>Hmm... sanki aynı "bug" sbcl'de de var gibi... Bir de şöyle deneyelim bakalım:
CL-USER> (- (- 1 9/10) 1/10) 0 CL-USER>Voila! You made it! Demekki neymiş, CL'in sayıları ondalık olarak göstermesi (mesela (/ 1 3) işlemi 1/3 verecektir 0.33333 değil) görsel güzelliğin ötesinde şeylere de yarıyormuş
1 ]=> (- (- 1 0.9) 0.1) ;Value: -2.7755575615628914e-17 1 ]=> (- (- 1 9/10) 1/10) ;Value: 0Steel Bank Common Lisp'e (SBCL) benzer sonuçlar elde ettim. Bu beni tatmin etmedi bir de MS Windows makinamdaki Dr. Scheme ortamında (PLT Scheme implementasyonu) deneyeyim dedim, sonuçlar şaşırtıcı idi:
> (- (- 1 0.9) 0.1) 0 > (- (- 1 9/10) 1/10) 0Lisp: Put the "fun" back into programming... diyebilir miyiz acaba? Yani daha az küfrederek kod yazmak filan ;-)
$ echo "1 - 0.9 - 0.1" | bc 0bc - An arbitrary precision calculator language :) Dr.Scheme ve bc'ye saygılar ;-)