What Arduino are you using? On 8bit AVRs the "double" type is identical with the "float" type, so your result is expected. BTW: your way to extract integers out of the floating point types will never give you an increased precision, the contrary is the case. You will always loose precision that way.