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