A workaround for what? Your code is defining doubles, copying floats into them, and printing them as vars. That's exactly what you're getting.

Vars have only 3 digits after the decimal, no matter if they were converted from double. Look here:

http://manual.3dgamestudio.net/diag_var.htm

When you want to see the content of a variable, use printf, which accepts double variables.

BTW when you write a constant like "2.862738448796", it is a float number with 6 digits precision. lite-C has double variables, but no double constants. A cast operator like (double) can not add more digits to a number.