将科学计数法输出为十进制计数法
Posted
技术标签:
【中文标题】将科学计数法输出为十进制计数法【英文标题】:Output scientific notation as decimal notation 【发布时间】:2012-12-11 11:25:57 【问题描述】:我正在使用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)
,但还是不行。
是我的命令有问题,还是环境有问题?
【问题讨论】:
谁知道这是什么类型的 Lisp 以及实现提供了什么?如果你有兴趣,何不问问作者呢? 我才刚开始,所以我不确定我有多“感兴趣”:) 主要是想知道如何让它工作,所以我有一个可靠的起点。从您的评论看来,改变环境可能会有所帮助? 如果你想学习 Lisp,我建议使用 Lisp 实现并提供一些文档。使用像 Common Lisp 或 Scheme 这样成熟的方言也会有所帮助。 @wxvw - 啊,这就是我正在寻找的解决方案。如果发布,将接受作为解决方案。 链接http://www.solve-et-coagula.com/As3Lisp.html
已失效 (404)。我很想知道它指向什么。
【参考方案1】:
事实证明,不同的环境可以解决问题。
我使用了 Gnu Common Lisp (http://www.cs.utexas.edu/~novak/gclwin.html),答案按预期返回。
【讨论】:
在这篇文章之前我没有听说过协鑫。***说 GCL 还没有完全符合 CL 规范。我不知道在 wikipedia 上的那个声明中有多少库存......但是如果你要在你的机器上安装 CL 环境,还有其他完全兼容的替代方案:Clozure Common Lisp (CCL)、Steel-Bank Common Lisp (SBCL)、CMUCL,适合初学者。【参考方案2】:如果您的实现支持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
干杯。
【讨论】:
以上是关于将科学计数法输出为十进制计数法的主要内容,如果未能解决你的问题,请参考以下文章