The registry does not support floating point, but you know what it does support? Integers. so let's use that!
So they did something like:
double f;
RegSetValueExA ( KeyHandle, ValName, 0, REG_DWORD, &f, sizeof(f) )
It is just that... double is 64-bit type. DWORD is 32-bit type.
Well, Windows doesn't care. For it, the type is just a label on the value, for readability. Internally, all the registry values are binary blobs.
And that's why I had to implement 64-bit DWORDs.