Could you provide is with a small but full example where you get the wrong values? I guess that you have some other code that changes the value and is responsible for the differences.
Here you have an example how the output looks like for some casts:
Code:
$ db2 "values ( double(4800), decimal(double(4800), 8, 2), char(double(4800)), char(decimal(double(4800), 8, 2)) )"
1 2 3 4
------------------------ ---------- ------------------------ ----------
+4.80000000000000E+003 4800.00 4.8E3 004800.00