É um bug que você pode usar 0.0. O compilador trata implicitamente todas as expressões constantes com valor zero como apenas 0.
Agora, é correto para o compilador permitir uma conversão implícita de uma intexpressão constante de 0 para seu enum conforme a seção 6.1.3 da especificação C # 5:
Uma conversão de enumeração implícita permite que o literal inteiro decimal 0 seja convertido em qualquer tipo enum e em qualquer tipo anulável cujo tipo subjacente seja um tipo enum. No último caso, a conversão é avaliada convertendo para o tipo de enum subjacente e envolvendo o resultado (§4.1.10).
Já falei com a equipe C # sobre isso antes: eles gostariam de ter removido a conversão acidental de 0,0 (e de fato 0,0m e 0,0f) para valores enum, mas, infelizmente, deduzi que quebrou muito código - embora isso nunca deveria ter sido permitido em primeiro lugar.
O Mono mcscompilador proíbe todas essas conversões de ponto flutuante, apesar de não permitir que:
const int Zero = 0;
...
SomeEnum x = Zero;
apesar do fato de que Zeroé uma expressão constante, mas não um literal inteiro decimal.
Eu não ficaria surpreso em ver a alteração da especificação C # no futuro para permitir qualquer expressão constante de inteiro com um valor de 0 (ou seja, para imitar mcs), mas eu não esperaria que as conversões de ponto flutuante estivessem oficialmente corretas. (Eu estive errado antes sobre prever o futuro do C #, é claro ...)
1.0literal ao enum personalizado.