Math:
This has to do with how DBC rounds. There seems to be a maximum of 6 decimal places. But this declines as the number of digits before the decimal goes up. If there are already 6 digits before the decimal, then the decimal value disappears or rounds up the last digit befor the decimal:
print 123456.7
print 123456.123456
print 12345.123456
print 1234.123456
print 123.123456
print 12.123456
print 1.123456
print .123456
You can write your own routine to display as long a float as you want and return it as a string, though that might not help you if you're requiring the precision of the float calculation. A user on the forums named Alien did a lot of work regarding large floats.
If you need the precision of the actual value and not a string, a math dll might help and also be pretty speedy.
Enjoy your day.