conversion double float recieved to int?

JHEnt:
So the constant is "understood" to be 2000 by any device programmed to read the standard and the reading device will perform the conversion after it recieveds the interger value?

Yes.

Value From Device / 2000.0 = Value As A Human Would Understand It

(uint38_t)((Value As A Human Would Understand It * 2000.0) + 0.5) = Value As Device Would Understand It

For the function do I pass the 8 bytes in like this?

No...

conv(&arrayName[0]);

So will this pass 8 bytes into the function and return the modified 4 bytes to array 0-3 to be read as a float type?

Looks like it.

I don't see how float f can be read out of the function.

The union is the key.