Doubles.constrainToRange(double,double,double) and Floats.constrainToRange(float,float,float) both cause unnecessary boxing of their arguments. Both call Preconditions.checkArgument(boolean, String, **Object**, **Object**) which causes the boxing.

Can be easily fixed by introducing an overloaded version of checkArgument for floats and doubles. For ints and longs these versions already exist:
Preconditions.checkArgument(boolean, String, **int**, **int**)
Preconditions.checkArgument(boolean, String, **long**, **long**)
which is also why constrainToRange does not have the same problem in the Ints, Shorts & Longs packages.
public final class Doubles extends DoublesMethodsForWeb {
  private Doubles() {}
  /**
   * The number of bytes required to represent a primitive {@code double} value.
   *
   * <p><b>Java 8 users:</b> use {@link Double#BYTES} instead.
   *
   * @since 10.0
   */
  public static final int BYTES = Double.SIZE / Byte.SIZE;
  /**
   * Returns a hash code for {@code value}; equal to the result of invoking {@code ((Double)
   * value).hashCode()}.
   *
   * <p><b>Java 8 users:</b> use {@link Double#hashCode(double)} instead.
   *