如何找到溢出/外包装值,模数的2个值的差异

时间:2014-02-24 23:49:27

标签: java math modulus difference absolute-value

说我0,1,2,3,4,5

的限值为5个含义值

(5 to 0)(5 to 0)的区别在于1
(5 to 1)(1 to 5)的差异为2
(0 to 4)(4 to 0)的差异为2

我似乎理解这一点的方法是,如果在任何值中使用了最后一个值或第一个值,则仅使用外包装差异。除此之外,与Math.abs一起使用的正常工具应该没问题

例如Math.abs(1-3)
(1 to 3)的区别在于2
(3 to 4)的区别在于1

我似乎无法理解如何编程外包装差异部分。

我尝试了这个但是没什么特别的,我觉得模数运算符的东西会起作用,但我似乎无法弄明白

int value_one = 0;
int value_two = 5;

int answer = Math.abs(value_one - value_two);
answer = (((answer % 5) + 5) % 5) + 1;
System.out.println(answer);
int answer2 = (value_one + value_two) % 5;
System.out.println(answer2);

1 个答案:

答案 0 :(得分:1)

int v1 = Math.min(value_one, value_two);    
int v2 = Math.max(value_one, value_two);
int answer = Math.min(v2 - v1, v1 + values.length - v2);

其中values.length是{0,1,2,3,4,5}的长度,即6。