A Java double number has three parts: 52 bits of "significand" and 11 bits of "exponent" and a 1 bit sign. When a number is too big for the 52 bit significand the exponent kicks in to multiply (or divide) the significand by 10, 100, 1000 etc. Any time you multiply you get zeros for the rightmost digits, losing some precision. In most domains (except Bill Gates' checking account!) when you have a number in the trillions, the ones don't make that much difference.
I have no idea what the structure of an Informix double is but it's probably similar. If so, the precision you are looking for may simply not be there.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi