如何在不使用“/”符号的情况下划分两个数字?

时间:2015-03-04 17:39:39

标签: java

我写了一些与问题相关的代码,但我无法让它发挥作用。输入两个数字后,程序陷入无限循环。这种方法有什么办法可行,还是完全错了?

import java.util.Scanner;
public class Arithmetic {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the numerator and denominator respectively : ");
        double a = input.nextDouble();
        double b = input.nextDouble();
        double c;
        for(c=0;;c+=0.000000000001){
            if(b*c==a){
                break;
            }
        }
        System.out.print(c);
    }
}

4 个答案:

答案 0 :(得分:9)

我可以想到没有斜线的一种方式:

double c = a * Math.pow(b, -1);

您还可以将Unicode转义替换为/字符。

double c2 = a \u002f b;

您还可以转换为BigDecimal s,使用divide方法,然后将商品转换回double

double c3 = new BigDecimal(a).divide(new BigDecimal(b)).doubleValue();

答案 1 :(得分:3)

你可以使用exponent和logarithm,因为exp(log(a)-log(b))= a / b

公共类HelloWorld {

 public static void main(String []args){
    System.out.println(Math.pow(10,Math.log10(a)-Math.log10(b)));
 }

}

您需要添加对> 0和b> 0的检查并制作逻辑,以便它适用于所有a,b但是您可以自己动手。

例如,如果b = 0

抛出错误

如果< 0且b> 0

System.out.println(-Math.pow(10,Math.log10(-a)-Math.log10(b)));

答案 2 :(得分:0)

System.out.println("The result is : " + (a * Math.pow(b, -1)));

答案 3 :(得分:0)

public class Num {

public static void main(String[] args) {


    double num, den, res;
    num = 10;
    den = 2;

    res = Math.pow(Math.E, (Math.log(num)-Math.log(den)));

    System.out.println(res);


    }

}