gpt4 book ai didi

common-lisp - SBCL 意外陷入浮点?

转载 作者:行者123 更新时间:2023-12-05 00:57:48 26 4
gpt4 key购买 nike

考虑 Common Lisp 中的以下代码:

  (defun range (max &key (min 0) (step 1))
(loop for n from min below max by step
collect n))
(reduce #'* (range 61 :min 1))

这给出了 60! 的预期 bignum 值,即
8320987112741390144276341183223364380754172606361245952449277696409600000000000000

但是,以下代码不包含我能看到的任何浮点强制转换,但会生成一个浮点答案:
  (defun fact (n)
(if (= 0 n)
1
(* n (fact (- n 1)))))

(fact 60)
8.32098711274139e+81

问题是“为什么?”以及“我怎样才能在 SBCL(Steel-Bank Common Lisp)中编写一个直接、递归的 fact 来产生一个 bignum 结果?”

最佳答案

强制发生在 emacs 端。 ob-lisp.el调用读取结果。尝试在 *scratch* 缓冲区上进行评估以亲自查看

(read "8320987112741390144276341183223364380754172606361245952449277696409600000000000000")

关于common-lisp - SBCL 意外陷入浮点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34079242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com