Имеем код
decimal d=0;
d = func_that_returns_zero();
if (d == 0) { do_something(); }
Функция func_that_returns_zero() возвращает значение 0, полученное из запроса sql примерно так (для данного случая, если убрать лишнее):
private decimal func_that_returns_zero()
{
SqlCommand cmd = new SqlCommand(@"
select null", SqlCon);
object obj = cmd.ExecuteScalar();
if (obj != null)
return (decimal)obj;
else return 0;
}
Дак вот, выделенный участок на некоторых компьютерах (на одном) не отрабатывает.
Я бы понял, если бы я использовал тип double, но здесь почему? Может из-за того, что константа 0 имеет тип double и она как-то криво преобразуется в 0?