Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java有钳制功能吗?_Java_Clamp - Fatal编程技术网

java有钳制功能吗?

java有钳制功能吗?,java,clamp,Java,Clamp,假设我有一个值,我通常这样做是为了将它“钳制”到一个范围,这里是范围[0..1]。也就是说,如果它低于范围开始,将其增加到范围开始,将其增加到范围结束,将其减少到范围结束 clampedValue = Math.max(0, Math.min(1, value)); 是否有任何内置的夹紧功能 是否有任何内置的夹紧功能 编号从以下位置移植: 公共静态T形夹(T值、T最小值、T最大值){ 如果(val.compareTo(min)0)返回max; 否则返回val; } 注意:与.NET不同,泛型

假设我有一个
,我通常这样做是为了将它“钳制”到一个范围,这里是范围
[0..1]
。也就是说,如果它低于范围开始,将其增加到范围开始,将其增加到范围结束,将其减少到范围结束

clampedValue = Math.max(0, Math.min(1, value));
是否有任何内置的夹紧功能

是否有任何内置的夹紧功能

编号

从以下位置移植:

公共静态T形夹(T值、T最小值、T最大值){
如果(val.compareTo(min)<0)返回min;
否则如果(val.compareTo(max)>0)返回max;
否则返回val;
}
注意:与.NET不同,泛型中不允许使用基元类型,这意味着它们必须装箱/解装箱。使用基本类型时,例如
int
double
,此实现将执行三个box操作和一个unbox操作


注意:由于它是的一个端口,因此我将其作为一篇社区wiki帖子。

在查看了另一个答案中提供的通用钳制方法后,值得注意的是,这对基本类型有考虑

public static <T extends Comparable<T>> T clamp(T val, T min, T max) {...}

float clampedValue = clamp(value, 0f, 1f);
然后,只需为您需要的每个基本体类型重载相同的方法。

包括(以及其他基本体的等效方法)。从:

添加了
constraintrange([type]value、[type]min、[type]max)
方法,将给定值约束到
min
max
值定义的闭合范围内。如果值在范围内,则返回值本身;如果值低于范围,则返回
min
;如果值高于范围,则返回
max


另一个不是很漂亮,但可能的解决方案是使用三元运算符,这是
if-then-else
语句的缩写

一些例子:

// value must be between MIN_VALUE and MAX_VALUE
value = value > MAX_VALUE ? MAX_VALUE : value < MIN_VALUE ? MIN_VALUE : value;

// value must be between 0 and 10
value = value > 10 ? 10 : value < 0 ? 0 : value;
//值必须介于最小值和最大值之间
值=值>最大值?最大值:值<最小值?最小值:值;
//值必须介于0和10之间
值=值>10?10:值<0?0:数值;

@luigimendoza看到了吗?@luigimendoza也@AdamGent修改自己的函数显然是微不足道的,我有问题中的代码。我宁愿使用一个内置的,特别是因为它可能会处理所有的值数据类型。我真的不知道你在java方面的专业水平,所以我很难假设你的知识。c#使用Compariable来处理多种数据类型。。。。猜猜你在Java中做什么:)我很遗憾,因为这个巨大的疏忽,我不能再向其他开发人员推荐Java了。(开玩笑,尽管我确实认为他们应该包括在内)我喜欢这一行。它很简洁!对于使用Apache commons lang3而不是Guava的用户,有Range.fit方法<代码>范围。介于(0.0,1.0)之间。拟合(0.5);//返回0.5他们在3.10中添加了此选项:
public static float clamp(float val, float min, float max) {
    return Math.max(min, Math.min(max, val));
}
// value must be between MIN_VALUE and MAX_VALUE
value = value > MAX_VALUE ? MAX_VALUE : value < MIN_VALUE ? MIN_VALUE : value;

// value must be between 0 and 10
value = value > 10 ? 10 : value < 0 ? 0 : value;