Ответ 1
Я предполагаю, что это происходит потому, что литералы с десятичными точками рассматриваются как System.Decimal
и вызывают DivideByZeroException
Согласно MSDN
Целочисленные литералы [+ -]? [0-9] + обрабатываются как System.Int32, System.Int64 или System.Double
Реальные литералы без научной записи, но с десятичной точкой, обрабатываются как System.Decimal. Если число превышает максимальное или минимальные значения, поддерживаемые System.Decimal, затем анализируются как System.Double.
Согласно DivideByZeroException
Исключение, которое выдается при попытке разделить целое или десятичное значение от нуля.
Для System.Double
он возвращает Nan, потому что, если операция является делением и константы являются целыми числами, она изменяется на двойной тип результата, согласно справочному источнику (спасибо @steve16351 за хороший результат)