equal to と equal to term 比較演算子の違いは違いを説明していますが、重要な質問は、float を他のものと比較しない場合、どちらを使用すべきかということです。
"Pragmatic Programming Erlang" は =:= を推奨しており、== を疑うべきであり、フロートを扱う場合にのみ使用すべきであると述べています。ただし、既存のコードの多くがこのルールに従っていないとも書かれています。
だから私は少しジレンマがあります。周囲のコードとの一貫性を保つために、(float を他の値と比較しない場合でも) "==" を使用する必要がありますか? これがファイルの残りの部分と矛盾する場合でも、「=:=」を適切に使用する必要がありますか? ファイル内の他の式を「=:=」を使用するように変換する必要がありますか?
トレードオフは何ですか?どちらのオペレーターが他のオペレーターよりも効率的ですか? オペランドの 1 つが数値ではないことが保証されている場合、どちらを使用しても問題はありませんか? 隠されたトラップはありませんか (たとえば、NaN、Inf などの特別な float 値について - Erlang がこれらをサポートしている場合)。
ところで、私が直面しているコードベースは ejabberd です。