将值从[-x | x]归一化为[-1 | 1]

时间:2014-09-01 12:42:18

标签: java math

我想将-xx之间的值标准化为-11

我想过value / Math.abs(value),但问题是如果 值为0但不起作用。

是否有可能没有if和else,所以只进行一次操作?

也许我应该补充一点,这个值只能是-x,x或0.之间的任何内容。

4 个答案:

答案 0 :(得分:4)

value / Math.abs(x)

是你需要的。 x显然不应该为零。

另外,您应该考虑在value > x时如何处理案例。

答案 1 :(得分:1)

看一下java.lang.Integer类。有一些很好的静态方法可以帮助你,主要是Integer.signum(int)

这将完成这项工作,如果你想要0转换为1,添加0的检查:

int x = value == 0 ? 1 : Integer.signum(value);

编辑:Long同样包含使用long执行作业的方法。

或者,no-if代码;可能比较慢,但OP专门要求它:

final static int[] TABLE = { -1, 1 (or 0), 1 };
int x = TABLE[Integer.signum(value) + 1];

答案 2 :(得分:0)

让我们假设你只想要数字的符号。你可以使用

double sign = Math.signum(x);

注意:这会返回NaN表示NaN,0表示0。

如果您希望0返回其他值,则可以选择其他值。

注意:条件可能更简单/更清楚。 e.g。

int sign = x < 0 ? -1 : +1;

int sign = x > 0 ? +1 : x < 0 : -1 : 0;

答案 3 :(得分:0)

Herr是一种数学方法,我从-5开始到5并且在-1转换为1

    max=1;
    min=-1;
    maxold=-5;
    minold=5;

    value=2;

    newvalue= (max-min)/(maxold-minold)*(value-minold)+min;
    alert(newvalue);