两个Long类型相乘溢出怎么解决

如题,今天面试,面试官问到一个问题,怎么处理两个Long类型相乘溢出的问题?

5个回答

[code="java"]
public static void main(String[] args) throws Exception {
long a = Long.MAX_VALUE;
long b = Long.MAX_VALUE;

    BigDecimal ba = new BigDecimal(String.valueOf(a));
    BigDecimal bb = new BigDecimal(String.valueOf(b));
    BigDecimal bc = ba.multiply(bb);
    System.out.println(String.valueOf(a));
    System.out.println(String.valueOf(b));
    System.out.println(bc);
}

[/code]

9223372036854775807
9223372036854775807
85070591730234615847396907784232501249

用java.math.BigInteger处理。

java.Math.BigDecimal.multiply(java.Math.BigDecimal multiplican)

用BigDecimal

可以简单的说使用比long大的数据类型去接收乘积结果。例如:float,double,long double

http://jeelee.iteye.com/blog/652003

java.math.BinInteger类是针对大整数的处理类

java.math.BigDecimal类是针对大小数的处理类并加入了小数的概念

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐