Я играл с математикой, и я заметил, что вместо того, чтобы бросать DivideByZeroException поплавки и двойники получить присваивается значение Infinitity, когда вы делите на ноль Почему это так?Divide By Zero не бросает DivideByZeroException с поплавком или двойным ... почему?
[TestMethod]
public void TestFloatDivideByZero()
{
double myDouble = 100.0;
var DbzDouble = 1000.0/((myDouble - myDouble)/myDouble);
// Infinity
float myFloat = 100.0f;
var DbzFloat = 1000.0/((myFloat - myFloat)/myFloat);
// Infinity
decimal myDecimal = 100M;
var DbzDecimal = 1000M/((myDecimal - myDecimal)/myDecimal);
// DivideByZeroException
int myInt = 100;
var DbzInt = 1000/((myInt - myInt)/myInt);
// DivideByZeroException
}
Поскольку 'float' и' double' * могут * выражать бесконечность, а также значения «not-a-number», тогда как целые типы не могут. –