比较运算符 #
一、基本比较运算符 #
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)
九、总结 #
本章我们学习了:
- 基本比较:==、!=、<、>、<=、>=
- 链式比较:数学风格的连续比较
- 特殊值比较:NaN、missing、nothing
- 类型比较:isa和类型层次
- 集合比较:数组、字典、集合
- 近似比较:isapprox和≈
接下来让我们学习Julia的逻辑运算符!
最后更新:2026-03-27