Если вы можете использовать небезопасные блоки, этот работает:
static IntPtr IntPtrFromFloat( float f )
{
unsafe
{
return (*(IntPtr*)&f);
}
}
Создает IntPtr, содержащий адрес, равный двоичному представлению с плавающей точкой.
Также должно быть возможно просто объявить параметр как float. В любом случае это 32 бита [предполагается 32-битная C-DLL].