【发布时间】:2016-04-19 07:04:23
【问题描述】:
假设我有一个算术函数,它将添加两个long 变量并返回一个long 值。如果将Long.MaxValue() 作为参数传递,它不会给出完美的结果。解决方案是什么?下面的代码解释了我的意思:
public class ArithmaticExample {
public static void main(String[] args) {
System.out.println(ArithmaticExample.addLong(Long.MAX_VALUE, Long.MAX_VALUE));
}
public static long addLong(long a,long b){
return a+b;
}
}
【问题讨论】:
-
“解决方案是什么” 解决方案是什么?
long有一个范围。如果您将Long.MAX_VALUE添加到自身,您将超出该范围并环绕。所以? (我可能会在其他地方找工作,除非面试官有比这更好的问题。) -
预期结果是什么?好的解决方案是“溢出”(已经发生)、“饱和”、“加宽”(虽然没有更宽的原语,但您需要使用 BigInteger)和“错误输出”。