我正在读一本关于Elixir的书:Introducing Elixir。
在字符串上比较它说:
Elixir提供了两种用于比较字符串相等性
==
和===
运算符的选项。==
运算符通常最简单,但另一运算符产生相同的结果。
如果他们的意思相同,那么有两个运营商的目的是什么?
答案 0 :(得分:22)
浮现的一个例子是浮点数 - 它使用与字符串相同的比较函数:
iex> 1 == 1 #true
iex> 1 == 1.0 #true
iex> 1 === 1 #true
iex> 1 === 1.0 #false
对于!==
iex> 1 != 2 #true
iex> 1 != 1.0 #false
iex> 1 !== 2 #true
iex> 1 !== 1.0 #true
值得注意的是,这些函数使用以下Erlang表达式:
Elixir | Erlang
== | ==
=== | =:=
!= | /=
!== | =/=
将整数与float进行比较时,精度较低的术语将转换为另一个术语的类型,除非运算符是=:=或= / =之一。浮点数比整数更精确,直到浮点数的所有有效数字都在小数点的左边。当浮点数大于/小于+/- 9007199254740992.0时会发生这种情况。转换策略会根据浮点数的大小而改变,因为否则大浮点数和整数的比较会失去它们的传递性。