Perhaps I wasn't clear enough, they are number columns, and I an increasing the column width, not decreasing, which you supposed to be able to do even if there is data in the table.
Whats funny is, that when I create a temp table as a copy, truncate the data in it, then change the columns from a number(3) to number(5,3) so I can add 3 decimal points to the numbers, it then lets me insert as select all of the data from the original table.
But if I try to change the table with data in it from number(3) to number(5,3) it wont let me, but it will let me change it to number(6,3) with the data in the table.
I think while wrting this I may realize why now, because the original column width was number(3), and all the data in it was no more than 2 numbers, oracle must still think there is 3 numbers in the columns therefore wont let me change it to 5,3 but will allow 6,3. But when I insert as select it works because all of the data is a max of 2 numbers... strange!