6

等于和完全等于术语比较运算符之间的差异解释了这种差异,但还有一个重要问题是:当我不将浮点数与其他事物进行比较时,我应该使用哪个?

“Pragmatic Programming Erlang”推荐 =:= 并说你应该对 == 保持怀疑,并且只在处理浮点数时使用它。但是,它也表示许多现有代码不遵循此规则。

所以我有点进退两难。我是否应该使用“==”(即使将浮点数与其他值进行比较)以与周围代码保持一致?我是否应该酌情使用“=:=”,即使这与文件的其余部分不一致?我应该将文件中的其他表达式转换为使用“=:=”吗?

有哪些权衡?任何一个操作员都比另一个更有效吗?如果保证其中一个操作数不是数字,那么我使用哪个操作数有关系吗?是否没有隐藏的陷阱(例如,特殊的浮点值,如 NaN、Inf 等 - 如果 Erlang 支持这些)。

顺便说一句,我面临的代码库是 ejabberd。

4

1 回答 1

6

如果您不需要将整数与浮点数进行比较,请使用 =:=。性能是相同的(或者至少差异太小而无法测量),并且 Erlang 中不存在 NaN、inf 等。

很多 OTP 库代码使用 == 的原因可能是因为 =:= 是 Erlang 中最近添加的。

于 2012-05-21T14:00:27.150 回答