gpt4 book ai didi

floating-point - Lisp 的FORMAT 函数的隐式转换是否可以控制?

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:06 24 4
gpt4 key购买 nike

在尝试将分数四舍五入为 9 位数时,我遇到了以下问题:

? (format t "~9$" 763700091/112000148)
6.818742300
Nil

但四舍五入只精确到5位数。我希望 format 会自动处理这个问题;即,根据表示分数所需的位数将分数转换为 double ,但显然 format 不能那样工作。如果你强制这个分数加倍,你会得到:

? (coerce 763700091/112000148 'double-float)
6.818741802019762D0

在这种情况下,是否有控制指令指示 format 使用 double 。或者我必须在将分数传递给格式之前将其强制转换为 double-float 以实现此目的吗?

我知道 format 非常复杂,您当然可以通过调用外部函数来完成此操作,但我希望通过对 ~9$ 进行更简单的调整来摆脱困境>

最佳答案

documentation on the format string状态:

If arg is a rational number, then it is coerced to be a single float and then printed.

因此,您的问题的答案是,但是您可以轻松地将您所做的事情结合起来,将您刚刚强制转换为双 float 的数字舍入:

(format nil "~9$" (coerce 763700091/112000148 'double-float))
; ==> "6.818741802"

关于floating-point - Lisp 的FORMAT 函数的隐式转换是否可以控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43076489/

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