我有数学问题。
在我的世界中,偏航可以在-180到180之间,现在我需要向他的偏航者添加90。但如果偏航是150 + 90 = 240超过180,我怎么能加90但是如果它在-180时进一步计数180。
示例:
-150 + 90 = -60, No problem
0 + 90 = 90, No problem
150 + 90 = 240, Problem it needs to be -120
答案 0 :(得分:1)
这是模运算的典型例子。您可以使用余数运算符%
。
int current = 150;
int input = 90;
int newCurrent = ((180 + current + input) % 360) - 180;
System.out.println("NEW: " + newCurrent);
输出结果为:
NEW: -120
答案 1 :(得分:0)
你可以使用模数运算符作为正数,这看起来像一个除法但是给你剩下的而不是商:
10/6 = 1,66666...
10%6 = 4
For you: ( 150 + 90 ) % 180 = 60
答案 2 :(得分:0)
你可以这样解决:
private static final int MIN = -180;
private static final int MAX = 180;
public static void main(String[] args) {
System.out.println(keepInRange(-150 + 90));
System.out.println(keepInRange(0 + 90));
System.out.println(keepInRange(150 + 90));
System.out.println(keepInRange(-150 - 90));
}
private static int keepInRange(final int value) {
if (value < MIN) {
/*
* subtract the negative number "MIN" from "value" and
* add the negative result to "MAX" (which is like subtracting the absolute value
* of "value" from "MAX)
*/
return MAX + (value - MIN);
}
if (value > MAX) {
/*
* subtract the number "MAX" from "value" and to get exceeding number
* add it to "MIN"
*/
return MIN + (value - MAX);
}
return value;
}
输出结果为:
-60
90个
-120
120个
根据你的解释,最后的值应该是 -120 和 120 而不是 -60 和 60 就像你在你的例子中说的那样。超出的金额应该添加到“其他”边界,而不是 0 。 150 + 90
240 ,因此它超过MAX的界限60.然后应将其添加到MIN界限中。结果是 -120 。
如果这不正确,请更新您的问题。