Inconsistência no comportamento de divisão por zero entre diferentes tipos de valor

Por favor, considere o seguinte código e comentários:

Console.WriteLine(1 / 0); // will not compile, error: Division by constant zero

int i = 0;
Console.WriteLine(1 / i); // compiles, runs, throws: DivideByZeroException

double d = 0;
Console.WriteLine(1 / d); // compiles, runs, results in: Infinity   

Eu posso entender o compilador que verifica ativamente a divisão pela constante zero e a DivideByZeroException em tempo de execução, mas:

Por que usar um duplo em uma divisão por zero retornaria o Infinito em vez de lançar uma exceção? Isso é intencional ou é um bug?

Apenas para brincadeiras, fiz isso no VB.NET também, com resultados "mais consistentes":

dim d as double = 0.0
Console.WriteLine(1 / d) ' compiles, runs, results in: Infinity

dim i as Integer = 0
Console.WriteLine(1 / i) '  compiles, runs, results in: Infinity

Console.WriteLine(1 / 0) ' compiles, runs, results in: Infinity

EDITAR:

Com base no feedback de kekekela, executei o seguinte que resultou no infinito:

Console.WriteLine(1 / .0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001);

Esse teste parece corroborar a idéia e um duplo literal de0.0 é na verdade uma fração muito, muito pequena, que resultará em Infinito ...

questionAnswers(5)

yourAnswerToTheQuestion