Devo usar double ou float?

Quais são as vantagens e desvantagens de usar um em vez do outro em C ++?