【发布时间】:2017-03-28 17:47:33
【问题描述】:
在尝试将分数四舍五入为 9 位时,我遇到了以下问题:
? (format t "~9$" 763700091/112000148)
6.818742300
Nil
但四舍五入只能精确到 5 位数。我希望format 会自动处理这个问题;即,考虑到表示它所需的位数,将分数转换为双精度,但显然format 不能那样工作。如果你强制这个分数加倍,你会得到:
? (coerce 763700091/112000148 'double-float)
6.818741802019762D0
在这种情况下,是否有控制指令指示format 使用双精度。或者我必须将分数强制转换为double-float,然后再将其传递给 format 以完成此操作?
我知道format 非常复杂,您当然可以通过调用外部函数来完成此操作,但我希望对~9$ 进行更简单的调整
【问题讨论】:
-
我不这么认为。如果参数不是
FLOAT,它总是被强制转换为SINGLE-FLOAT。没有办法覆盖它。
标签: floating-point format lisp common-lisp