gpt4 book ai didi

Clojure:减法中的不一致舍入

转载 作者:行者123 更新时间:2023-12-02 06:18:53 25 4
gpt4 key购买 nike

我正在编写一段代码,其中数值相等性是几个逻辑条件中的一个重要因素。 Clojure 正在做一些我不太了解的事情来解释。例如:

user=> (- 5 4.9)
0.09999999999999964
user=> (- 5 4.8)
0.20000000000000018
user=> (- 5 2.9)
2.1
user=> (- 5 2.7)
2.3
user=> (- 5 2.8)
2.2
user=> (- 9 6.9)
2.0999999999999996
user=> (- 9 2.9)
6.1

似乎在某些情况下,Clojure 数值可以理解减去 0.1,而在其他情况下则不能。这里发生了什么?

最佳答案

默认情况下,这些结果以小数表示,存在固有的舍入误差。您可以通过在字母 M 后缀来切换到使用 BigDecimals:

user=> (- 5M 4.9M)
0.1M
user=> (- 5M 4.8M)
0.2M
user=> (- 9M 6.9M)
2.1M
user=> (- 9M 2.9M)
6.1M

要对小数变量执行相同操作,请使用 bigdec 形式:

user=> (def k 4.9)
#'user/k
user=> (- 5M k)
0.09999999999999964
user=> (- 5M (bigdec k))
0.1M

关于Clojure:减法中的不一致舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16800960/

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