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),但还是不行。

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

4

2 回答 2

1

事实证明,不同的环境可以解决问题。

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

于 2012-12-11T12:03:54.767 回答
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

查看格式 egg 规范

干杯。

于 2012-12-12T08:54:01.040 回答