Я знаю, что мы не можем сравнивать 2 значения с плавающей запятой, используя ==. Мы можем только сравнить, что они находятся в некотором интервале друг от друга.
Я знаю
if(val == 0.512)
неверно из-за ошибок, присущих вычислениям с плавающей запятой и преобразованию в двоичные и
должно быть
if (val in (0.512-epsilon, 0.512+epsilon))
Но 0 особенный? Можем ли мы сравнить поплавки ровно с 0? Или даже это неправильно? Особенно в контексте C # и Java?
double val = 0;
val = getVal();
if(val == 0)