输出科学记数法作为十进制表示法

时间:2012-12-11 11:25:58

标签: lisp number-formatting

我正在使用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),但仍无效。

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

2 个答案:

答案 0 :(得分:1)

原来不同的环境可以解决问题。

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

答案 1 :(得分: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

欢呼声。