Since you can send test data, I would first try sending a whole sequence of 1.0, a whose sequence of 1.5, etc., and dump them in hex (unpack "H*") to see what you get. You may have a simple framing error.
You can compare this with the output of
print unpack "H*", pack "f*", 1, 1, 1, 1, 1.5, 1.5
Updated:The most likely error is byte order. For portability, your application is most likely storing the bytes in network order, but the Intel native format is little-endian. For 32-bit quantities (including single-precision floating point, you should be able to load them like this:
@floats = unpack "f*", pack "N*", unpack "V*", $floatingpointdata;