2012-12-11 34 views
1

我使用http://www.solve-et-coagula.com/As3Lisp.html来运行基本因子函数。以十进制表示法输出科学计数法

它以科学计数法输出结果,但我希望看到完整的“扩展”数字。

(defun factorial (n) 
(cond ((= n 0) 1) 
     (t (* n (factorial (- n 1)))))) 

然后

(factorial 100) 

9.33262154439441e+157 

我已经试过各种format命令,(format t "~D" (factorial 100))看起来像赢家,但它不工作。还尝试设置(setq *READ-DEFAULT-FLOAT-FORMAT* 'double-float)但仍然无法正常工作。

问题与我的命令,还是它的环境?

+0

谁知道这是什么类型的Lisp以及实现提供了什么?如果你有兴趣,为什么不问作者? –

+0

我刚刚开始,所以我不知道如何“感兴趣”我还没有:)大多数只是想知道如何让它工作,所以我有一个可靠的地方开始。从你的评论看,这听起来像变化的环境可以帮助? – Ben

+3

如果你想学习Lisp,我会建议使用Lisp实现和一些可用的文档。使用像Common Lisp或Scheme这样既定的方言也会有所帮助。 –

回答

1

发现一个不同的环境会做的伎俩。

我使用Gnu Common Lisp(http://www.cs.utexas.edu/~novak/gclwin.html),答案正如预期的那样返回。

+1

在这篇文章之前我没有听说过GCL。维基百科表示,GCL尚未完全符合CL规范。我不知道维基百科上的声明有多少股票......但是如果您要在您的机器上安装CL环境,还有其他完全兼容的替代方案:Clozure Common Lisp(CCL),Steel-Bank Common初学者Lisp(SBCL),CMUCL。 –

1

如果你的实现支持srfi-28(格式),那么我认为〜F会做到这一点。 鸡方案:

#;1> (use format) 
; loading /usr/local/lib/chicken/6/format.import.so ... 
; loading /usr/local/lib/chicken/6/chicken.import.so ... 
; loading /usr/local/lib/chicken/6/srfi-13.import.so ... 
; loading /usr/local/lib/chicken/6/data-structures.import.so ... 
; loading /usr/local/lib/chicken/6/ports.import.so ... 
; loading /usr/local/lib/chicken/6/extras.import.so ... 
; loading /usr/local/lib/chicken/6/format.so ... 
#;2> (format #t "~F~%" (factorial 100)) 
93326215443944100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0 
#t 

退房的format egg specification

欢呼。