在java中使用+和 - 相乘

时间:2013-09-15 12:53:04

标签: java multiplication

我必须在没有*/运算符的情况下进行乘法运算。我已经制作了这样的方法。

for(int i=0; i < number1; i++){
    result += number2;
}

System.Out.println(result);

现在,这是我的问题:直到我的讲师改变主题,其中乘法方法必须是乘以十进制值才好。我不知道如何使用+-运算符制作可以对十进制值起作用的乘法方法。

4 个答案:

答案 0 :(得分:1)

是的,你可以使用 log 进行乘法。

<强>日志(A * B)=日志的(a)+日志(b)中

然后找出 log(a)+ log(b)的指数值

然后你可以转换标志..

例如:

-9 * 8 = -72

日志(9 * 8)=日志(9)+日志(8)= 2.19 + 2.07 = 4.27

E 1 4.27 = 72

现在只有一个 - 没有。那么它是-72

否则它是72

我正在写函数:

void multiply(int num1,int num2)  
{
int counter=0;  
if(num1<0)  
{counter++;num1+=num1+num1;}  
if(num2<0)  
{counter++;num2+=num2+num2;}    
double res=Math.log(num1)+Math.log(num2);  
int result=(int)Math.exp(res);
if(counter%2==0)
System.out.println("the result is:"+result);
else
System.out.println("the result is:-"+result);  
}  
希望这会对你有帮助....

答案 1 :(得分:1)

你取十进制数并逐步移动小数点,直到有一个int:0.041 - &gt; 1.步骤0.41 - &gt; 2.步骤4.1-&gt; 3.步骤41

乘以0.041 * 3可以通过上述步骤进行3次,乘以41 * 3 = 123.对于结果,你取123并且不用步骤:1。12.3,2。1.23,3。0.123。结果如下:0.123 = 0.041 * 3.

编辑: 要确定每个数字的小数位数,您可以在此问题中找到答案:How many decimal Places in A Double (Java)

答案在其他方面显示了解决这个问题的两种方法非常简单:将数字放入String并检查此String中的“。” - DecimalPoint,或者使用具有scale()的BigDecimal类型 - 返回小数位数。

答案 2 :(得分:0)

你不应该期待完整的代码:但这里有一个提示来实现这一点。 尝试使用recursion技术代替for循环。

public double multiplyMe(double x, double y)
{
   if(y == 0 || x == 0)
     return 0;

   if(y > 0 && x > 0 )
     return (x + multiplyMe(x, y-1)); // multiply positive

   if(y < 0 || x < 0 )
     return - multiplyMe(x, -y); // multiply negative
}

使用log的另一种方法:

  

10加权(log10(x)和log10(y)之和)

答案 3 :(得分:0)

这种方法可能更容易理解。您必须添加a b次,或相当于b a次。此外,您需要处理ab可以是正面或负面的4种不同情况。

public int multiply(int a, int b){
    int result = 0;

    if (a < 0 && b < 0){
        for (int i = a; i <= -1; i++)
            result-=b;    
    }
    else if (a < 0){
        for (int i = 1; i <= b; i++)
            result+=a;
    }
    else if (b < 0){
        for (int i = 1; i <= a; i++)
            result+=b;
    }
    else {
        for (int i = 1; i <= b; i++)
            result+=a;    
    }
    return result;
}

public static void main(String[] args){
    System.out.println(multiply(3,-13)); // -39
}