The actual value *is* being passed to the Java side. The *display* of the number of entirely up to the client application. For example, using SQLPlus
SQL> create table t ( x number );
Table created.
SQL> insert into t values (0.0000474);
1 row created.
SQL> select * from t;
X
---------
4.7E-05
SQL> col x format 99.9999999999
SQL> select * from t;
X
--------------
.0000474000
SQL> col x format 99.99999
SQL> select * from t;
X
---------
.00005
Either your Java application is outputting the number in this format, OR you are passing a string from the database back to the Java (which is not a good idea).