problem with sending float type data serially using c++

A float is just 4 bytes of binary data that is coded to show the decimal point position and the number before and after the point. The trick is that you have to tell the C++ compiler that you are not making a stupid mistake and really do want to treat the float as an array of bytes:

void send_float (float f)
{
  // Cast float to a pointer to bytes - Tells C++ you really mean to do that.
  byte* bytes = (byte*)&f;

  // write the data to the serial
  Serial.write (bytes, sizeof(f));
}

You may be better off in the long run coding this to convert the value to string data, transmit the string and convert back on the other end. No reason you can't send binary jibberish over the wire but debugging that later on can be a real bear. If you have tons of floats to send with huge values then maybe it's worth it to send the binary data instead.