将科学记数法输出为十进制记数法



我正在使用 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

查看格式鸡蛋规格

干杯。

最新更新