Keep default value as 0.0 for 0 or NULL for numeric column
This is just a matter of displaying the data as required:

SQL&gt; create table t1(c1 number(28,3));

Table created.

SQL&gt; insert into t1 values(nvl(null, 0.0));

1 row created.

SQL&gt; select * from t1;

        C1
----------
         0

SQL&gt; col c1 format 999990.0
SQL&gt; select * from t1;

       C1
---------
      0.0