"I'm really happy to be here, I know the football and the training in Italy are different to Spain, but I'm ready. Milan should have a great season."
After Real agreed a fee with Milan on Thursday, Huntelaar had a medical at the Serie A club on Friday and penned a contract tying him to the Rossoneri until June 2013.
Earlier this summer Real had agreed a reported £18m fee with Stuttgart but Huntelaar rejected the move and the deal collapsed.
He made only 13 first-team appearances for the Spanish giants, who paid Ajax £20m for his services when Ramon Calderon was president.
His involvement in the second stage of the Champions League was hampered by a miscalculation from Madrid, who were unaware that clubs could only field one new player who had played in European competition earlier in the season.
Former Portsmouth midfielder Lassana Diarra, the team's other transfer window signing, was picked instead.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.