Вывести научную запись в виде десятичной записи

Я использую 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 ответа

Решение

Оказывается, другая среда сделает свое дело.

Я использовал 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

проверить спецификацию формата яйца

веселит.

Другие вопросы по тегам