I have learning Common Lisp for 2 months, I meet a puzzle, here is the code:
CL-USER> (round 33.6)
34
-0.40000153
anyone explain it? Thanks
I have learning Common Lisp for 2 months, I meet a puzzle, here is the code:
CL-USER> (round 33.6)
34
-0.40000153
anyone explain it? Thanks
我不确定我是否理解你的问题。在 CLisp 中,round
四舍五入到最接近的整数(除非您指定除数)。最接近的整数33.6
是34
使得该位是正确的。
并且由于round
返回商和余数,它给出34
,余数为-0.4
。这一点大部分是正确的,所以我怀疑你想知道为什么它只是“大部分”。
它不完全正确 -0.4
的原因几乎可以肯定是由于浮点数的精度有限。计算(看似精确的)浮点数和整数之间的差异的结果可能令人惊讶:
CL-USER> (- 23.6 24) -0.39999962
您会期望在一个完美的世界中它会返回-0.4
,但由于上述原因,它不会。