【问题标题】: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)。我很想知道它指向什么。

标签: lisp number-formatting


【解决方案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

干杯。

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多