It is to do with the NUMBER datatype.
We can store 38 digits of *precision*, ie, significant digits, and to dos, might consume up to 22 *bytes* internally.
For example
SQL> create table t (
2 x1 number(10,5)
3 );
Table created.
SQL>
SQL> insert into t values (123.456);
1 row created.
SQL>
SQL> select dump(x1) from t;
DUMP(X1)
------------------------------------
Typ=2 Len=5: 194,2,24,46,61
In this case, we have 6 significant digits, but we managed to store it using only 5 bytes.