Here is a test: #include <stdio.h> main() { unsigned long int i1 = 1; double c1; c1 = i1; printf("%g\n", c1); } I got 4.94066e-324. Not good. Too little:-). Is that known problem? Is there known remedy to it? int64_t -> double works. Regards, Andrey