double が等しいかどうかを比較する場合、浮動小数点計算でエラーが発生する可能性があるため、許容レベルを指定する必要があります。例えば:
double x;
double y;
x = f();
y = g();
if (fabs(x-y)<epsilon) {
// they are equal!
} else {
// they are not!
}
ただし、計算を行わずに定数値を代入した場合でも、イプシロンをチェックする必要がありますか?
double x = 1;
double y = 1;
if (x==y) {
// they are equal!
} else {
// no they are not!
}
比較は==
十分ですか?それともやり直す必要がありfabs(x-y)<epsilon
ますか?割り当てにエラーを導入することは可能ですか? 私は偏執的すぎますか?
キャスト ( double x = static_cast<double>(100)
) はどうですか? 浮動小数点エラーも発生しますか?
LinuxでC++を使用していますが、言語によって異なる場合は、それも理解していただきたいです。