Java有钳位函数吗?
假设我有一个,我通常这样做是为了“夹紧”它到一个范围,这里的范围。也就是说,如果它低于范围开始,则将其增加到范围开始,它高于范围结束,将其减小到范围结束。value
[0..1]
clampedValue = Math.max(0, Math.min(1, value));
是否有任何内置功能用于夹紧到某个范围?
假设我有一个,我通常这样做是为了“夹紧”它到一个范围,这里的范围。也就是说,如果它低于范围开始,则将其增加到范围开始,它高于范围结束,将其减小到范围结束。value
[0..1]
clampedValue = Math.max(0, Math.min(1, value));
是否有任何内置功能用于夹紧到某个范围?
是否有任何内置功能用于夹紧到某个范围?
不。
在查看了另一个答案中提供的通用钳夹方法之后,值得注意的是,这具有基元类型的装箱/取消装箱注意事项。
public static <T extends Comparable<T>> T clamp(T val, T min, T max) {...}
float clampedValue = clamp(value, 0f, 1f);
这将使用包装类,从而产生 3 个 box 操作(每个参数一个),以及返回类型 1 个 unbox 操作。Float
为了避免这种情况,我会坚持写很长的手,或者对你想要的类型使用非泛型函数:
public static float clamp(float val, float min, float max) {
return Math.max(min, Math.min(max, val));
}
然后,只需为所需的每个基元类型使用相同的方法进行重载即可。