gpt4 book ai didi

clojure - 为什么 Clojure/REPL 将相同数字的 float 和整数表示不同?

转载 作者:行者123 更新时间:2023-12-05 01:09:18 24 4
gpt4 key购买 nike

在 Clojure 中,我写了一个简单的函数不断调试,最后才实现。

(= 3 3)

true

(= 3.0 3)

false
为什么?

我知道浮点运算存在一些问题,即不应直接比较两个浮点值。

即使在 Java 中,3.0 和 3 也将是平等的,并且可能与许多其他语言相同。

最佳答案

如果类型相同,则它们不是。

注意 java 的 equal也返回错误:

> (.equals 3.0 3)
false

或考虑以下 java 程序:
 public static void main(String []args){
Integer i = 1000;
System.out.println(i.equals(1000.0));
System.out.println(i==1000.0);
}

输出:

false
true



= 之间有区别和 == 功能

=

Equality. Returns true if x equals y, false if not. Same as Java x.equals(y)...



所以如果你想比较 nums 的值,使用 ==

==

Returns non-nil if nums all have the equivalent value (type-independent), otherwise false

关于clojure - 为什么 Clojure/REPL 将相同数字的 float 和整数表示不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15969202/

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