The International Cricket Council awarded the mega One-day tournament to India, Pakistan, Sri Lanka and Bangladesh in April this year.
The Premadasa stadium in the Sri Lankan capital Colombo and the Gaddafi stadium in Lahore, Pakistan, will host the semi-finals while the opening ceremony will be held in Bangladesh.
India will host 22 of the 52 matches, including the final. Pakistan stages 15 matches, Sri Lanka nine and Bangladesh six.
"It was a collective decision. Most of the decisions were taken unanimously. We have hosted the World Cup before and we are happy that Bangladesh is also there this time," Indian cricket board chief Sharad Pawar said on Tuesday.
However it was not decided which of Mumbai's two international cricket stadiums will hold the final.
India held the 1987 World Cup with Pakistan and then Sri Lanka joined the two countries for the 1996 version.
The 2007 World Cup will be held in the West Indies.