在Java中不使用int,Long,Double,String,BigDecimal存储两个整数乘法结果

时间:2018-06-21 18:08:05

标签: java

所以问题就像有一种方法将两个int值用作参数,我们必须存储这两个整数的乘法,但不能存储在int,Long,Double,BigDecimal,String中。结果(乘法)的范围将超出整数范围。

---- method(int a,int b){
      return a*b;
   }

因此方法签名中的破折号表示访问者正在寻找的期望的返回类型。

2 个答案:

答案 0 :(得分:1)

您可以使用 long 基本类型或返回 java.lang.Number 对象类型(它是Java中所有数字框类型的超类型):

public Number method(int a, int b){
    return (long)a * b;
}

请注意,您必须将变量之一强制转换为long。

注意:此解决方案要求修改方法的正文!

答案 1 :(得分:1)

您可能会使用以下代码段:

public boolean[] method(int a, int b){
    boolean[] bits = new boolean[64]; // max amount of long bits
    for(long l = 0, bit = 1; l < bits.length; l++){
        bits[(int) l] = (((long) a * b) & bit) == bit;
        bit <<= 1;
    }
    return bits;
}

这段代码使用简单的位操作来填充一个布尔数组,该布尔数组将产品表示为位。 ({{1}的true1的{​​{1}})

因为您永远都不能将计算结果存储在任何地方。您需要每次进行计算。