gpt4 book ai didi

lisp - 为什么CCL中的round不正确?

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

学习Common Lisp 2个月,遇到一个难题,代码如下:

CL-USER> (round 33.6)
34
-0.40000153

有人解释一下吗?谢谢

最佳答案

我不确定我是否理解您的问题。在 CLisp 中,round 舍入到最接近的整数(除非您指定一个除数)。最接近 33.6 的整数是 34,因此该位是正确的。

由于 round 返回商 余数,它给出 34,余数为 -0.4。那一点大部分是对的,所以我怀疑你想知道为什么它只是“大部分”。

它不是完全 -0.4 的原因几乎可以肯定是由于 float 的精度有限。计算(看似精确的) float 与整数之间的差异的结果可能令人惊讶:

CL-USER> (- 23.6 24) -0.39999962

你期望在一个完美的世界中返回 -0.4 但它没有,原因如上所述。

如果您想知道为什么是这种情况(即, float 在幕后如何工作),您可以查看 thisthis作为例子。

关于lisp - 为什么CCL中的round不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22213306/

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