code: func (d *Decoder) DecodeFloat() (rv float32, err error) {
  	data := d.data
  	if len(data) < 4 {
  		msg := fmt.Sprintf(errInsufficientBytes, 4)
  		err = unmarshalError("DecodeFloat", ErrUnexpectedEnd, msg, data)
  		return
  	}
  	val := uint32(data[3]) | uint32(data[2])<<8 |
  		uint32(data[1])<<16 | uint32(data[0])<<24
  
  	d.data = data[4:]
  	return math.Float32frombits(val), nil
  }
docs: // DecodeFloat treats the next 4 bytes as an XDR encoded floating point and
  // returns the result as a float32.
  //
  // An UnmarshalError is returned if there are insufficient bytes remaining.
  //
  // Reference:
  // 	RFC Section 4.6 - Floating Point
  // 	32-bit single-precision IEEE 754 floating point