в С#, если вы 0/0
получаете исключение.
Но если вы 0.0/0
или 0.0/0.0
получаете double.NaN
и double.Infinity
, соответственно.
но если вы передадите эти результаты в int
, вы получите 0.
> (int)double.PositiveInfinity
0
> (int)double.NaN
0
Почему это так? Разве время выполнения не должно давать ошибку кастинга, потому что бесконечность явно не равна нулю?