Arduino XBee Data PayLoad Problem

Hi everyone,
I’m using Arduino-Xbee library for my Xbee network. I would like to send floating point value to the coordinator. But in arduino-xbee api, I have to use
ZBTxRequest (XBeeAddress64 &addr64, uint8_t *payload, uint8_t payloadLength)
to send a packet. The problem is when I put a double/float value in the payload and send it using this command, on the receiver side, it was just an integer value. Decimal values are so important for my calculations. Can anybody give me suggestion on how can i send double/float values using Arduino-Xbee api?
Regards
Nyein

Here are part of my code
When I transmit value like 2.7, on the receiver side, it can get only 2.

double hopdistance;
uint8_t hopsize[3]={9,1, hopdistance}; packet);
broadcasthop(hopsize);
void broadcasthop(uint8_t hopsize[])
{

Serial.print("

Broadcasting hop size");
uint8_t pay[] = {hopsize[0],hopsize[1],hopsize[2]};
XBeeAddress64 addr64=XBeeAddress64(0x00000000, 0x0000ffff);
ZBTxRequest zbTX=ZBTxRequest(addr64,pay,sizeof(pay));
// Serial.print(pay[3]);
ZBTxStatusResponse txStatus=ZBTxStatusResponse();

xbee.send(zbTX);
if (xbee.readPacket(5000)) {
  Serial.print("

Got a reply packet for broadcast");
if (xbee.getResponse().getApiId() == ZB_TX_STATUS_RESPONSE)
{
Serial.print("
Got transmit status response");
xbee.getResponse().getZBTxStatusResponse(txStatus);
if (txStatus.getDeliveryStatus() == SUCCESS)
{
Serial.print("
Broadcasting success!“);
BroadcastHopSize=true;
} else
{
Serial.print(”
Broadcasting error!“);
// broadcasthop(hopsize);
}
}
else{
Serial.print(”
No transmit status response");
//broadcasthop(hopsize);
}
} else if (xbee.getResponse().isError()) {
Serial.print(“Error reading packet. Error code: “);
Serial.println(xbee.getResponse().getErrorCode());
//broadcasthop(hopsize);
} else {
Serial.print(”
local XBee did not provide a timely TX Status Response – should not happen”);
//broadcasthop(hopsize);
}
}