比较运算符 #

一、基本比较运算符 #

1.1 运算符列表 #

运算符 描述 示例
== 相等 1 == 1
!= 不相等 1 != 2
< 小于 1 < 2
> 大于 2 > 1
<= 小于等于 1 <= 1
>= 大于等于 1 >= 1

1.2 基本比较 #

julia
1 == 1
1 == 2
1 != 2
1 ≠ 2
1 < 2
2 > 1
1 <= 1
1 ≤ 1
1 >= 1
1 ≥ 1

1.3 Unicode运算符 #

输入方法:

  • \ne + Tab
  • \le + Tab
  • \ge + Tab

二、链式比较 #

2.1 基本链式比较 #

Julia支持链式比较:

julia
1 < 2 < 3
1 < 2 > 1
1 < 3 == 3
1 < 2 < 3 < 4

2.2 数学表达式 #

julia
x = 5
0 < x < 10
-10 < x < 0

2.3 范围检查 #

julia
x = 5
1 <= x <= 10
x < 0 || x > 10

三、特殊值比较 #

3.1 NaN比较 #

julia
NaN == NaN
NaN != NaN
NaN === NaN
isequal(NaN, NaN)
isnan(NaN)

3.2 missing比较 #

julia
missing == missing
missing === missing
ismissing(missing)
missing === nothing

3.3 nothing比较 #

julia
nothing == nothing
nothing === nothing
isnothing(nothing)

3.4 isequal vs == #

julia
isequal(NaN, NaN)
NaN == NaN
isequal(missing, missing)
missing == missing
isequal(0.0, -0.0)
0.0 == -0.0

四、类型比较 #

4.1 isa 运算符 #

julia
1 isa Int
1.0 isa Int
1.0 isa Float64
"hello" isa String
[1, 2, 3] isa Vector

4.2 typeof 比较 #

julia
typeof(1) == Int
typeof(1.0) == Float64
typeof(1) <: Integer
typeof(1.0) <: Number

4.3 类型层次比较 #

julia
Int <: Integer
Int <: Number
Int <: Real
Float64 <: AbstractFloat
Float64 <: Real

五、集合比较 #

5.1 数组比较 #

julia
[1, 2, 3] == [1, 2, 3]
[1, 2, 3] == [3, 2, 1]
[1, 2, 3] === [1, 2, 3]

5.2 字典比较 #

julia
Dict(:a => 1) == Dict(:a => 1)
Dict(:a => 1) == Dict(:a => 2)

5.3 集合比较 #

julia
Set([1, 2, 3]) == Set([3, 2, 1])
issetequal([1, 2, 3], [3, 2, 1])

六、字符串比较 #

6.1 相等比较 #

julia
"hello" == "hello"
"hello" == "Hello"
"hello" === "hello"

6.2 字典序比较 #

julia
"abc" < "abd"
"abc" < "abcd"
"abc" < "ABC"

6.3 大小写不敏感比较 #

julia
lowercase("Hello") == lowercase("hello")
casecmp("Hello", "hello")

七、近似比较 #

7.1 isapprox #

julia
0.1 + 0.2 == 0.3
isapprox(0.1 + 0.2, 0.3)
isapprox(0.1 + 0.2, 0.3, atol=1e-10)

7.2 ≈ 运算符 #

julia
0.1 + 0.2 ≈ 0.3
0.1 + 0.2 ≈ 0.3

输入方法:\approx + Tab

7.3 自定义容差 #

julia
isapprox(1.0, 1.01, rtol=0.01)
isapprox(1.0, 1.01, atol=0.01)

八、实践练习 #

8.1 练习1:范围检查 #

julia
function in_range(x, lower, upper)
    lower <= x <= upper
end

in_range(5, 1, 10)
in_range(0, 1, 10)

8.2 练习2:类型检查 #

julia
function check_type(x)
    if x isa Int
        "Integer"
    elseif x isa Float64
        "Float"
    elseif x isa String
        "String"
    else
        "Other: $(typeof(x))"
    end
end

check_type(1)
check_type(1.0)
check_type("hello")

8.3 练习3:安全比较 #

julia
function safe_compare(a, b)
    if ismissing(a) || ismissing(b)
        return missing
    elseif isnan(a) || isnan(b)
        return false
    else
        return a == b
    end
end

safe_compare(1, 1)
safe_compare(1, missing)
safe_compare(NaN, NaN)

九、总结 #

本章我们学习了:

  1. 基本比较:==、!=、<、>、<=、>=
  2. 链式比较:数学风格的连续比较
  3. 特殊值比较:NaN、missing、nothing
  4. 类型比较:isa和类型层次
  5. 集合比较:数组、字典、集合
  6. 近似比较:isapprox和≈

接下来让我们学习Julia的逻辑运算符!

最后更新:2026-03-27