Concatanation is a string operation. In order to concatanate numbers Oracle must convert them to varchar2's first. the result of the concatanation is therefore a varchar2. you can wrap the result in a to_number() function to convert it back again.

By the way, what data are you storing as numbers and concatanating? It sounds like there may be some bad design practice going on -- concatanation is not a "natural" operation to apply to numbers