Yeah I'm not a fan of NUMBER unless you actually need that level of precision.
Especially when you go outside the realm of integers. If you were storing (for example) dollars and cents, then you get into these kinds of messes
SQL> create table t ( x1 number, x2 number(6,2));
Table created.
SQL> insert into t values (1/3, 1/3);
1 row created.
SQL> select * from t;
X1 X2
---------- ----------
.333333333 .33
SQL> select dump(x1), dump(x2) from t;
DUMP(X1)
----------------------------------------------------------------------------------
DUMP(X2)
----------------------------------------------------------------------------------
Typ=2 Len=21: 192,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34
Typ=2 Len=2: 192,34
You now have to deal with fictional decimal points and you've gone from 2 bytes to 21 bytes potentially.
I view datatypes as just another form of data correctness. If I'm storing (say) highway speed limits, then NUMBER(3) means that I have guaranteed that any erroneous speed limit of 1000+ will be rejectged. I am always lowering the chances of a data corruption.