code: def _from_float(cls, xmin, xmax, ymin, ymax):
          
  
          ixmin = int(np.floor(xmin + 0.5))
          ixmax = int(np.ceil(xmax + 0.5))
          iymin = int(np.floor(ymin + 0.5))
          iymax = int(np.ceil(ymax + 0.5))
  
          return cls(ixmin, ixmax, iymin, iymax)
docs: Return the smallest bounding box that fully contains a given
          rectangle defined by float coordinate values.
  
          Following the pixel index convention, an integer index
          corresponds to the center of a pixel and the pixel edges span
          from (index - 0.5) to (index + 0.5).  For example, the pixel
          edge spans of the following pixels are:
  
          - pixel 0: from -0.5 to 0.5
          - pixel 1: from 0.5 to 1.5
          - pixel 2: from 1.5 to 2.5
  
          In addition, because `BoundingBox` upper limits are exclusive
          (by definition), 1 is added to the upper pixel edges.  See
          examples below.
  
          Parameters
          ----------
          xmin, xmax, ymin, ymax : float
              Float coordinates defining a rectangle.  The lower values
              (``xmin`` and ``ymin``) must not be greater than the
              respective upper values (``xmax`` and ``ymax``).
  
          Returns
          -------
          bbox : `BoundingBox` object
              The minimal ``BoundingBox`` object fully containing the
              input rectangle coordinates.
  
          Examples
          --------
          >>> from photutils import BoundingBox
          >>> BoundingBox._from_float(xmin=1.0, xmax=10.0, ymin=2.0, ymax=20.0)
          BoundingBox(ixmin=1, ixmax=11, iymin=2, iymax=21)
  
          >>> BoundingBox._from_float(xmin=1.4, xmax=10.4, ymin=1.6, ymax=10.6)
          BoundingBox(ixmin=1, ixmax=11, iymin=2, iymax=12)