docs: def _readfloat(self, length, start):
          """Read bits and interpret as a float."""
          if not (start + self._offset) % 8:
              startbyte = (start + self._offset) // 8
              if length == 32:
                  f, = struct.unpack('>f', bytes(self._datastore.getbyteslice(startbyte, startbyte + 4)))
              elif length == 64:
                  f, = struct.unpack('>d', bytes(self._datastore.getbyteslice(startbyte, startbyte + 8)))
          else:
              if length == 32:
                  f, = struct.unpack('>f', self._readbytes(32, start))
              elif length == 64:
                  f, = struct.unpack('>d', self._readbytes(64, start))
          try:
              return f
          except NameError:
              raise InterpretError("floats can only be 32 or 64 bits long, not {0} bits", length)