我正在使用 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)
但仍然不起作用。
是我的命令有问题,还是环境有问题?
事实证明,不同的环境可以解决问题。
我使用了 Gnu Common Lisp (http://www.cs.utexas.edu/~novak/gclwin.html),答案是按预期返回。
如果您的实现支持 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
查看格式鸡蛋规格
干杯。