Another Payload Decoder Question (issues converting bytes to float)

The solution, as per here:

Was to multiply by 1000000, like so:

cpu_temp_pack = struct.pack('h', int(cpu_temp))
bat_pack = struct.pack('h', int(bat))
lat_pack = struct.pack('i', int(lat * 1000000))
lon_pack = struct.pack('i', int(lon * 1000000))

Then decode like so:

payload = (bat_pack + cpu_temp_pack + lat_pack + lon_pack)

function Decoder(bytes, port) {
  var decoded = {};

  if (port === 1) 
  { 
    decoded.bat = (bytes[1] << 8) | bytes[0];
    decoded.cpu_temp = (bytes[3] << 8) | bytes[2];
    decoded.lat = (bytes[7]<<24 | bytes[6]<<16 | bytes[5]<<8 | bytes[4]) / 1000000;
    decoded.lon = (bytes[11]<<24 | bytes[10]<<16 | bytes[9]<<8 | bytes[8]) / 1000000
  }

  return decoded;
}